一、问题描述:
二、设计思路:
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退出试探,否则会陷入死循环。
标签:11,出售,步长,23,int,金鱼,flag From: https://www.cnblogs.com/bzsc/p/17360207.html