Skip to content

878. Nth Magical Number #349

@namespace-io

Description

@namespace-io

二分法

class Solution {
public:
    int gcd(int a, int b){
        if(a == 0) return b;
        return gcd(b % a, a);
    }
    int nthMagicalNumber(int N, int A, int B) {
        
        long lcm = A * B / gcd(A, B);
        long left = 2;
        long right = 1e14;
        long mod = 1e9+7;
        
        while(left < right){
            long mid = (left + right) / 2;
            if(mid / A + mid / B - mid / lcm < N) left = mid + 1;
            else right = mid;
        }
        
        return left % mod;
    }
};

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions