Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- long long int ans, mmc, a, b, n;
- int gcd(int a, int b) {
- if (a == 0) return b;
- else return gcd(b % a, a);
- }
- int lcm(int a, int b) {
- return a*b/gcd(a, b);
- }
- void binary_search(long long int l, long long int r) {
- if (r>=l) {
- long long int mid = (r - l)/2 + l;
- long long int k = floor(mid/a) + floor(mid/b) - floor(mid/mmc);
- if (k >= n) {
- if (k == n){
- ans = mid;
- }
- binary_search(l, mid-1);
- } else {
- binary_search(mid+1, r);
- }
- }
- return;
- }
- int nthMagicalNumber(int N, int A, int B) {
- ans = 1e18;
- mmc = lcm(A, B);
- a = A;
- b = B;
- n = N;
- long long int mod = 1e9 + 7;
- binary_search(1, 1e18);
- return ans % mod;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment