杂题——糖果促销

糖果促销

小度最喜欢吃糖啦!!!
这天商店糖果促销,可给小度高兴坏了。

促销规则:一颗糖果有一张糖纸,p 张糖纸可以换取一颗糖果。换出来糖果的包装纸当然也能再换糖果。

小度想吃 k 颗糖果,他需要买多少颗糖?

格式

输入格式:

第一行一个整数 T(1≤T≤106) ,表示测试数据组数;
接下来T行,每行两个整数 ,(1≤≤109)p i​,k i​(1≤p i​≤109,0≤k i​≤109) ,表示第 i 次测试中, p i​ 张糖纸换一颗糖,小度想吃 k i​ 颗糖。

输出格式:

T 行,每行一个整数表示需要买多少颗糖果。

样例 1

输入:

1
2
3
4
3
3 4
4 5
2 7

输出:

1
2
3
3
4
4

思路

​ 纯纯一道数学题目:

​ 思路是这样的,我们设我们买的糖果数量为x,那么我们可以将我们吃的糖果分为两部分,一部分是买的糖果,一部分是换来的糖果,那么可以列公式(注意这里的1表示我们最终吃完最后一个糖果之后是至少还剩一片糖纸)
$$
k=x+(k-1)/p
$$

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bits/stdc++.h> 

using namespace std;
void solve(){
long long p, k;
cin >> p >> k;
if (k == 0) cout << k << '\n';
else {
k -= (k - 1) / p;
cout << k << '\n';
}
}
int main()
{
int T;
cin >> T;
while (T--) {
solve();
}
return 0;
}