猴子吃桃子的C语言程序,C语言,猴子吃桃子代码求注释

答案:哥们好,我来解释解释哈

这个程序是倒着分析的:首先说的是s[n]为第n只猴子走后,留给其他每个猴子的桃子的数目。(当然猴子都不知道前面的猴子已经拿过了),所以剩余桃子是s[5]*4,就是第五只猴子给其他每只猴子留下的桃子数目乘以4。

倒着推,第五只猴子先多吃了一个,再平分5份,并吃掉了自己的一部分,那么留下的s[5]其实肯定是4的倍数【这段代码其实可以优化一下】则留下的s[5]*5并加上1,就是第4个猴子留下的桃子总数,然后看下是否是4的倍数,因为这是第四个猴子留下的准备给其他4个猴子的桃子,肯定是4的倍数啦,如果不是就说明错误咯,,然后这个数再除以4,再乘以5,再加上1,就是第三只猴子留下的桃子总数,那肯定也是4的倍数啦。

以此类推,就能推到第一只猴子时的桃子数什么的,总数什么的,都出来啦

如果上面意思弄懂了,现在就说程序本身,先假设s[5]为1,然后看s[5]*5+1【就是第四只猴子留下的桃子数目】是否能被4整除,如果不能,就直接跳出循环,假设s[5]为2,再看s[5]*5+1能否被4整除,如果能被整除,就得到s[4]的值,【就是你 “s[4] /= 4;  //想知道这代码有什么用”的这段代码的意思】再乘以5,然后再加上1,就是第三只猴子留下的桃子数目,再看这个能否被4整除,如果不能,就直接跳出循环,再重新来啦  一直到s[1],最后s[0]就是所谓的总数目啦, 懂了吧,朋友?还没懂的话 就再继续探讨探讨哈 欢迎

if( (s[4]%4) !=0 )          continue;     else         s[4] /= 4;

是指当不到最后一次,也就是分成5份后还剩一个才能有继续分的必要。

s[4] /= 4; 是更新当前的桃子数目。

楼主,c我不懂,提供你c#源码:

for (int i = 30; i < 100000; i++)

{

if (i % 5 == 1)

{

int x2 = i-1 -(i-1)/5; //第二只猴子

if (x2 % 5 == 1)

{

int x3 = x2 - 1 - (x2 - 1) / 5; //三

if (x3 % 5 == 1)

{

int x4 = x3 - 1 - (x3 - 1) / 5; //四

if (x4 % 5 == 1)

{

int x5 = x4 - 1 - (x4 - 1) / 5;

if (x5 % 5 == 1)

{

textBox1.AppendText(i.ToString() + ",");

}

}

}

}

}

}

d2b47841f633d162ea5faf88d2331da8.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值