这道题我也想了很久,看了网棚举高上很多方法都是直接给出公式算,我自己找了下这个问题的规律,用迭代和逆向递推的方法解决了这个问题,具体代码如下:(程序附有注释,建议大家动笔画画图,看看不同水手个数的情况是怎么样的,这样就可以理解了)
#include <stdio.h>#include<stdlib.h>
#include<math.h>
main()
{
int n //水手个数
printf("Input n(1<n<=5):\n")
scanf("%d",&n)
//增加程序的健壮性
if(n>1&&n<=5)
printf("y=%d\n",Coconu (n))
else
printf("Error!\n")
system("pause")
}
int Coconu (int n)
{
int i //内层循环变量
int j=1 //外层循环变量,
int s //原来椰链尺子的个数
int r //迭代变量
do //第一层循环:增加最后一名水手平均分完之后的每一份椰子数,从1开始(1最小)
{
r=j*n+1 //最后一名水手总的椰子数
// 第二层循环:利用迭代及反向递推的方法求出原先的椰子数答行
for(i=n-1i>0i--)
{
// 在迭代过程中,如果逆向递推出现不能整除的情况,则跳出循环。(因为椰子必须是整个的)
if(r%(n-1)!=0)
break
// 迭代
s=(r/(n-1))*n+1
r=s
}
j++
}while(i!=0) //i=0则表示完成了循环,整个循环完成s才是最终的原先的椰子个数
return s
}
e是以10为底数的意思数学里面科学计数法经常用的10的多少次方轮橡洞
+002则是10的正腊枯2次方
好比
0.1
如果用e就是
1e-1
1乘以10的负1次方
10e-2
10乘以10的负2次如棚方
这两个数都等于0.1,而c语言默认都是小数点前面1位数
所以你的123.456当然等于1.23456
x
10的2次方
即1.23456e+002
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)