###### 问题遇到的现象和发生背景
###### 问题相关代码,请勿粘贴截图
/*5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。960
第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
需要提交的是一个整数,不要填写任何多余的内容*/
#include<stdio.h>
int main()
{
int num=6;
int i;
/*num%5==1; num--;num-num/5;
num%5==2; num-2;num-num/5;
num%5==3; num-3;num-num/5;
num%5==4; num-4;num-num/5;
num%5==0;*/
while(1)
{
num+=5;
i=num;
if(i%5==1){
i-1;
i-=(i/5);
if(i%5==2){
i-2;
i-=(i/5);
if(i%5==3){
i-3;
i-=(i/5);
if(i%5==4){
i-4;
i-=(i/5);
if(i%5==0){
printf("%d",num);
break;
}
}
}
}
}
}
return 0;
}
###### 运行结果及报错内容
这段代码运行结果是3121 答案是3141 我验证了一下确实不对,但是为啥呢
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果3141
#include <stdio.h>
int main()
{
int total;
int final = 0;
while (1)
{
final++;
total = final * 5;
int passed = 1;
for (int i = 4; i >= 1; i--)
{
if (total % 4 != 0)
{
passed = 0;
break;
}
total = total / 4 * 5 + i;
}
if (passed)
break;
}
printf("%d", total);
return 0;
}
i-1;i-2这些是什么操作?这样是不会修改到i的,应该是i-=1;i-=2;之类