c语言编程水手分椰子问题,我自己写了一段程序,答案不对

c语言编程水手分椰子问题,我自己写了一段程序,答案不对,第1张

这道题我也想了很久,看了网棚举高上很多方法都是直接给出公式算,我自己找了下这个问题的规律,用迭代和逆向递推的方法解决了这个问题,具体代码如下:(程序附有注释,建议大家动笔画画图,看看不同水手个数的情况是怎么样的,这样就可以理解了)

#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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12493911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存