CF1352C 【K-th Not Divisible by n】
阿新 • • 發佈:2020-08-23
比賽的時候腦子糊了,簡單結論題沒想出來,最後亂搞了個二分過的((
思路:
每次二分一個答案 \(x\) 。
那麼 \(x\) 之前無法算進答案的數的個數顯然是 \(\lfloor \frac{x}{n} \rfloor\)
所以若答案是 \(x\) ,則在它之前符合條件的數就是 \(x -\lfloor \frac{x}{n} \rfloor\)
每次判斷一下在它之前符合條件的數是否大於等於 \(k\) 即可。
Code:
#include<iostream> #include<algorithm> #include<cstring> #include<cstdio> #include<bitset> #include<cmath> #include<queue> #include<map> #include<set> #define LL long long using namespace std; LL read() { LL ans=0,f=1; char c=getchar(); while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){ans=ans*10+c-'0';c=getchar();} return ans*f; } LL t,n,k,ans,l,r; int main() { t=read(); while(t--) { n=read();k=read(); if(k<n) printf("%lld\n",k); else { l=1,r=1e18; while(l<=r) { LL mid=l+r>>1; if(mid-mid/n>=k) { ans=mid; r=mid-1; } else l=mid+1; } printf("%lld\n",ans); } } return 0; }