海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只
猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
问海滩上原来最少有多少个桃子?

这题怎么做?
怎样编程

第1个回答  2020-07-27
#include<iostream>
using namespace std;
int main(){
int x;
for(x=5;x<10000;x++){
int m=x;
int num=0;
for(int i=1;i<=5;i++){
if((m-1)*4%5==0){
m=(m-1)/5*4;
num++;
}else{
break;
}
}
if(num==5){
cout<<"x="<<x<<endl;
break;
}
}
return 0;
}

缩进自己微调
第2个回答  2021-01-12
void main(){
/*
那么第5只没拿之前有5*i+1
也就是第4只猴子拿走之后还有5*i+1
第4只猴子拿走了一份,5*i+1是余下4份
那么第4只猴子拿走了(5*i+1)/4
第3只猴子拿走了(((5*i+1)/4)*5+1)/4
...
其余同理
前一只猴拿走的个数为后一只猴*5+1再 /4
*/
int i;//假设最后的猴子拿走了i个桃
for(i=1;i<10000;i++){
int j,k=i;
//只有4只猴,只需往上推4次
for(j=1;j<=4;j++){
//判断上述表达式是否能成立
if((k*5+1)%4==0){
//如果能成立则让k得到前一只猴子拿的数
//重复4次
//如果都能成立,那么就是该数
k=(k*5+1)/4;
}else{
//不成立说明不对
break;
}
}
//循环4次之后如果都成立,那么最终j的值会是5
//也就是说,当j==5的话,该数判断了4次全部成立
if(j==5){
printf("%d",k*5+1);
break;
}
}
}
第3个回答  2005-10-29
22656
相似回答