算法日常

        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;
} 

  

posted @ 2023-07-25 16:04  小小浑鱼  阅读(17)  评论(0)    收藏  举报