c语言求解,我很困扰

 ###### 问题遇到的现象和发生背景

 ###### 问题相关代码,请勿粘贴截图

/*5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。
第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。
第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。
第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉。9605只猴子醒来,重新把香蕉均分成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;之类