Advertisement
nikunjsoni

878

Dec 11th, 2021
922
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.51 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int nthMagicalNumber(int n, int a, int b) {
  4.         int mod = 1e9+7;
  5.         long long int low = 0, high, mid, lcm;
  6.         high = (long long)min(a, b) * n;
  7.         lcm = a*b / __gcd(a, b);
  8.        
  9.         // Binary search the number.
  10.         while(low < high){
  11.             mid = low + (high-low)/2;
  12.             if((mid/a + mid/b - mid/lcm) < n)
  13.                 low = mid+1;
  14.             else
  15.                 high = mid;
  16.         }
  17.        
  18.         return low%mod;
  19.     }
  20. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement