FOJ 1150

一,问题描述

FOJ1150题目链接

 翻译如下:

 

二,问题分析

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章