NYJYA 发表于 2019-2-14 12:01:05

这个代码能不能这样解释?

海滩上有一堆桃子,五只猴子来分。第1只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个吃掉,拿走了一份。
第二只猴子把剩下的桃子又平均分为五份,又多了一个,它同样把多的一个吃掉,拿走了一份,第3、第4、第5只猴子都是这样做的。
问海滩上原来最少有多少个桃子。

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int x
    ,i=0,j=1;
    while(i<5){
      x=4*j;//第五个猴子留下的桃子数。
      for(i=0;i<5;i++)
      {
            if(x%4!=0){break;}
            x=(x/4)*5+1;//遍历找出第四只,第三只,第二只,第一只 猴子留下的桃子,和最初所有的桃子
      }
      j++;
    }
    printf("%d\n",x);
   
    return 0;
}

BngThea 发表于 2019-2-14 12:19:24

行不行你看看结果对不对

910201513 发表于 2019-2-14 13:02:01

本帖最后由 910201513 于 2019-2-14 13:21 编辑

可以啊,没毛病啊

82457097 发表于 2019-2-14 14:00:01

楼主看注释分析 遇到问题要动手多思考 多演算 不要觉得麻烦就放弃等着别人给答案
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int x
    ,i=0,j=1;
    while(i<5){
      x=4*j;//假设这是最后一个猴子留下的桃子
      for(i=0;i<5;i++)
      {
            if(x%4!=0){break;}//上一个猴子留下的是否能分成四份 以为它分了五份 自己拿走一份 剩下的应该是四份 不能结束循环 j++
            x=(x/4)*5+1;//从假设的最后留下的桃子 一次算出上一个猴子留下的桃子从而推算出最终的桃子
      }
      j++;
    }
    printf("%d\n",x);
   
    return 0;
}

NYJYA 发表于 2019-2-14 14:10:33

82457097 发表于 2019-2-14 14:00
楼主看注释分析 遇到问题要动手多思考 多演算 不要觉得麻烦就放弃等着别人给答案
#include
#include


这是我自己分析的,我想问的是我分析得对不对

82457097 发表于 2019-2-14 14:12:02

本帖最后由 82457097 于 2019-2-14 14:13 编辑

NYJYA 发表于 2019-2-14 14:10
这是我自己分析的,我想问的是我分析得对不对

你分析的对

NYJYA 发表于 2019-2-14 14:29:03

82457097 发表于 2019-2-14 14:12
你分析的对

谢谢
页: [1]
查看完整版本: 这个代码能不能这样解释?