算法日常
C. K-th Not Divisible by n

题目大意:
多组输入,数字从1到无穷,找到不被n整除的第k个数
解题思路:
本题可以直接暴力输出,每次判断一个数是否被n整除,再用计数器统计。直到找到第k个符合条件的数,但是因为数字过大,很容易超时,所以此题我 用二分,每次判断mid,mid-mid/n==k,如果相等及为答案,用asd标记出来。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,k;
bool check(ll ans){
ans-=ans/n;
return ans<k;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>k;
ll l=1,r=2e9;
ll mid=0,asd=0;
while(l<=r){
mid=(r+l)>>1;
if(check(mid)){
asd=mid;
l=mid+1;
}else{
r=mid-1;
}
}
cout<<asd+1<<endl;
}
return 0;
}

浙公网安备 33010602011771号