for循环数据超时怎么解决

#include<stdio.h>
int main()
{
int s,n,m;
scanf("%d%d%d",&s,&m,&n);
int k =1;
;
for (s-=m;s>0;s-=m)
{
s+=n;

k++;
}
printf("%d\n", k);
return 0;

}
某仓库现存货物 s 箱,每天上午出货 m 箱、下午进货 n 箱,若s≥m>n≥0,则第 k 天将会出现空仓的情况。请你帮仓库管理员编写程序,输入s、m 和 n,计算并输出 k。

我用js实现了一下,原理一样:
s>0就代表还有货,s<=0就没有货了
上午 s=s-m;
下午 s=s+n;
一天完成k++



var s = 10, m = 2, n = 1, k = 0;
while(s > 0){
    s = s - m;
    s = s + n;
    k++;
}
console.log(k)

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

这题不需要循环吧
k=s /(m-n)
if k>0 k=k+1