TLE第三个,90分,求大佬们看看咯

P1150 Peter 的烟

kangli @ 2017-09-11 21:54:00

#include<iostream>
using namespace std;
int main()
{
    int z=0,n,k,s=0,x=0,y=0;
    cin>>n>>k;
    s+=n; x+=n;
    while (x>=k)
    {
    x=x/k;
    s+=x;
    y=x+x%k;
    x=y;
    }
    cout<<s;
}

by piggy @ 2017-09-11 23:00:12

我觉得你这里

x=x/k;
s+=x;
y=x+x%k;

有点问题,在算 y 的时候实际上 x 已经改变成“换来的烟数”了,取模的值似乎就没意义了。

#include<iostream>
using namespace std;
int main()
{
    int z=0,n,k,s=0,x=0,y=0;
    cin>>n>>k;
    s+=n; x+=n;
    while (x>=k)
    {
    s+=x/k;
    y=x/k+x%k;
    x=y;
    }
    cout<<s;
}

稍微改了一下(这个也可以过),下面是我的代码

#include <cstdio>
int ans,n,k;

int main(){
    scanf("%d%d",&n,&k);
    for (ans=n; n>=k; ){    //n为当前烟蒂数 
        ans+=n/k;
        n=n/k+n%k;
    }
    printf("%d",ans);
}

|