这样写还有什么问题吗,弄了好久还是不对

img

img

int main()
{
    int m,k;
    scanf("%d %d",&m,&k);
    int a = m/k;
    int b = m%k;
    int n=a*k;
    while(a>0)
    {
        m=a+b;
        a = m/k;
        b = m%k;
        n += a*k;
    }
    n+=b;
    printf("共%d天\n",n);
    return 0;
}

输入4 3//m=4,k=3
a=m/k=4/3=1
n=m+a=4+1=5
while(a>=k){ //1>=3 false 所以跳过循环

printf("%d\n",n); //n=5

#include<stdio.h>
int main(){
    int m,k,s;
    scanf("%d %d",&m,&k);
    if(m>=k){
        s=0;
        while(m-k>=0){
            s=s+k;
            m=m-k+1;
        }
        s=s+m;
        printf("%d\n",s);
    }
    else{
        printf("%d\n",m);
    }
    return 0;
}


#include <stdio.h>
int fun(int m,int k,int s)
{
    if(m == 0)
        return 0;
    else
    {
        if(s == k)
        {
            m = m+1;
            s = 0;
        }
        return 1 + fun(m-1,k,s+1);
    }
}
int main()
{
    int m,k,day = 0;
    scanf("%d %d",&m,&k);
    day = fun(m,k,0);
    printf("%d",day);
    return 0;
}

img


你少加了一部分,例如m=5,k=3,3天奖励的1块和剩下两天的2块加起来刚好为3块又可以多奖励1块