ljx_gkx @ 2023-04-26 11:25:41
#include<iostream>
using namespace std;
int main()
{
int n, k; //n根烟,k根烟蒂换一根烟!
cin >> n >> k;
int cnt = n; //烟的数量!
// 计算烟蒂生烟的数量:
while (n / k != 0) {
cnt += n/k;
n /= k;
}
cout << cnt << endl;
return 0;
}
by windows_fleon @ 2023-04-26 11:27:05
@ljx52lm
n-=n/k*k
by ljx_gkx @ 2023-04-26 12:29:33
@windows_fleon 谢谢大佬
by ljx_gkx @ 2023-04-26 12:33:53
@windows_fleon 大佬,,80分,WA了第二个点和第三个点。
by FengYuXinMing @ 2023-04-26 13:21:49
稍等,我去把这道题看一眼(AC了,我看一下怎么给你讲)
by FengYuXinMing @ 2023-04-26 13:30:12
#include<bits/stdc++.h>//万能头文件
using namespace std;
int main()
{
int n,k,sum = 0,a = 0;
//n代表原来有多多少烟
//k代表多少烟蒂可以换一个烟
//sum代表共吸了多少烟a代表现在有多少烟蒂
cin >> n >> k;
sum += n;//先累加一波,把本来的先加上
a += n;//烟蒂同理
while (a >= k){//如果从现在的烟蒂比多少烟蒂换一个烟福多
sum += a/k;//a/k求出现在的烟蒂能换多少烟
a = a/k + a%k;
//重新赋值 a/k就是换了多少烟,换了多少就加上多少烟蒂
//抽完就有了嘛,再加上a%k,因为a%K代表原来换完烟后还
//剩下多少烟蒂,因为剩下的换完了,所以就再加上剩下的
//烟蒂就行
}
cout << sum;//输出不多说了
return 0;
}
本蒟蒻也是第一次教别人,有不好的你和我说
by FengYuXinMing @ 2023-04-26 13:34:38
@ljx52lm 你while的问题是,while里面第二行,举个栗子你的n是10,k是3,先cnt+=n/k,n还是10,因为那只是赋值,再n/=k,10/3=3那个1会省略,但是我们真正要留下的是1,自然就是错的了
by ljx_gkx @ 2023-04-26 15:48:07
@ababbjxzt 谢谢佬,太详细了!
by FengYuXinMing @ 2023-04-26 17:16:41
@ljx52lm 第一次回答别人的问题,太谢谢你了,让我找到了自信,互关吗?
by ljx_gkx @ 2023-04-27 17:09:08
@ababbjxzt 已关注