第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;
}
}
}