ACM--Peter‘s smokes

Peter’s smokes

Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 2019, Accepted users: 1902
Problem 10082 : No special judgement

Problem description

Peter has n cigarettes. He smokes them one by one keeping all the butts. Out of k > 1 butts he can roll a new igarette.
How many cigarettes can Peter have?

Input

Input is a sequence of lines. Each line contains two integer numbers giving the values of n and k.

Output

For each line of input, output one integer number on a separate line giving the maximum number of cigarettes that Peter can have.

Sample Input

4 3
10 3
100 5

Sample Output

5
14
124

分析

这个题的坑就是需要考虑除去能形成新的烟的剩余烟头是否能和新形成的烟组成新的烟;
left表示商
yu表示余数
temp是储存上一次的余数和商的和
sum储存烟头

代码

#include<iostream>
using namespace std;
int main() {
	int n,m;
	while(cin>>n>>m) {
		int sum=n,temp,left=n,yu=0;
		while(1) {
			temp=left+yu;
			left=temp/m;
			if(left==0)//如果剩余烟头不满足能形成新的烟,就跳出循环
				break;
			yu=temp%m;
			sum+=left;
		}
		cout<<sum<<'\n';
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MORE_77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值