题目描述:
小明有n瓶可乐,他每喝完一瓶可乐就会把瓶盖保存起来,k(k>1)个瓶盖可以换一个新的可乐,那么小明最终能喝到多少可乐?
输入格式:
输入包含多组样例,第一行包含一个数字T表示样例组数
之后每个样例包含两个整数n,k,含义如题目描述
输出格式:
每个样例输出一个数字num表示可以喝到的可乐数
输入样例:
2
3 2
4 4
输出样例:
5
5
#include <iostream>
using namespace std;
int main()
{
int res = 0, T, n, k;
cin >> T;
while (T--)
{
cin >> n >> k;
res = n; //开始必有n瓶
while (n >= k)
{
res += n / k;
n = n / k + n % k;
}
cout << res << endl;
}
return 0;
}
#include <iostream>
#include <cstdint>
using namespace std;
uint32_t cokes(uint32_t n, uint32_t k)
{
uint32_t num = n; /*!< 总的可乐数 */
uint32_t caps = n;/*!< 剩余瓶盖数 */
while (caps >= k) {
num += caps / k;
caps = (caps / k) + (caps % k);
}
return num;
}
int main(int argc, char **argv)
{
uint32_t n, k;
while (1) {
cin >> n >> k;
if (k <= 1) {
cout << "Invalid exchange rate " << k << "Must bigger than 1" << endl;
} else {
cout << cokes(n, k) << endl;
}
}
}