题目大意:
输出第k个不能被n整除的数。
例:n=3 k=7 不能被n整除的数是1 2 4 5 7 8 10 11 13 ....,答案为10。
题解:
我们还原下案例
1.当ans到7时发现7前面有两个数可以被n整除,所以ans+2; 记录now=6;
2.当ans在区间{7,9] 发现9也能被n整除,所以ans+1; 记录now=9;
3.当ans在区间{9.10] 并没有数可以被n整除,所以输出ans;
同理我们只要找出ans上一次能被整除的位置now,然后每次判断区间内是否存在能被n整除的数,对ans进行加法。
#include <iostream>
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin >> t;
while (t--)
{
int n, k;
cin >> n >> k;
int ans = k;
int now = 0;
while ((ans - now) / n != 0)
{
int x = (ans - now) / n;
now += x * n;
ans += x;
}
cout << ans << endl;
}
}