出售金鱼

一、问题描述:

 

二、设计思路:

              x-(x+1)/(j+1);

           

 

三、程序流程图:

 

 

四、代码实现:

#include<stdio.h>
int main()
{
    int i,x,flag=0,j;
    for(i=23;flag==0;i+=2){//从23开始试探,步长为2
        for(j=1,x=i;j<=4&&x>=11;j++)
        {
            if((x+1)%(j+1)==0)//判断是否能整除
                {
                    x-=(x+1)/(j+1);
                 }
            else 
            {
                x=0;
                break;
            }
        }
            if(j==5&&x==11)
            {
                printf("原来有%d条金鱼\n",i);
                flag=1;
            }
        }    
    return 0;
}
    
    

     此题从x=11倒推貌似不行,因为整除  /  会自动保留整数,不存在小数部分,所以用到试探法和观察法,我发现最后的数为11,总结出第j次卖鱼后剩下的鱼的数量,然后建立循环,另x=i记录x最原来的值,最后一次循环结束后x==11,此时把步长为2的i的累计的和输出,注意把flag置1退出试探,否则会陷入死循环。

posted @ 2023-04-29 21:24  软件拓荒人  阅读(47)  评论(0)    收藏  举报