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);
}