Description
你现在有n支香烟。香烟抽完后有香烟蒂头。k个香烟蒂头可以换一支新的香烟。(k > 1)现在一开始有n支香烟,问最多能抽多少支烟?只能利用你现有的烟,不能向别人借烟。
Input
一行,两个整数,n和k。两个整数均在longint范围之内,答案也在longint范围之内。
Output
输出只有一个数, 表示最多能抽多少支烟.
Sample Input
4 3
Sample Output
5
做法:模拟呀,当然本题是有O(1)解法的,但因为数据。。所以没必要嘛。。。
代码如下:
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#define rep(i, a, b) for(int i = a; i <= b; i++)
using namespace std;
long long n, k, y, ans;
int main()
{
cin >> n >> k;
while (n > 0 || y >= k)
{
y += n;
ans += n;
n = y / k;
y %= k;
}
cout << ans;
}