一,问题描述
翻译如下:
二,问题分析
n = 10 k = 3
第一次可以抽 10 根烟,剩下 10 个烟头可以组成 3 根烟加 1 个烟头
第二次可以抽 3 根烟,剩下 3 个烟头 加上上次剩余的 1 个烟头,总共4个烟头 可以组成1根烟加1个烟头
第三次可以抽1 根烟,剩下一个烟头加上上次剩余1个烟头,剩下 2 个烟头 无法继续
n = n % k + n / k; //更新n值
三,代码解答
#include<iostream>
using namespace std;
int main() {
int n, k; // n根烟,k个烟头组成一支新的烟
while (cin>>n>>k)
{
int res = n;
int t = 0;
if (n < k) //n<k 此时剩余烟头无法组成一支新的烟
cout << res << endl;
else {
while (n / k)
{
res += (n / k);
n = n % k + n / k;
}
cout << res << endl;
}
}
return 0;
}