POJ2773 容斥 二分

2021-07-05 13:29:49 字數 703 閱讀 7585

題目要求和m互質的第k大。

那麼二分區間,統計區間內和m互質的數個數,所有個數為k結果最小的就是答案。

k比較大最初二分的右端點開大點。

#include #include #include #include #include #include using namespace std;

#define maxn 1111111

#define count count

long long m, k;

bool is_prime[maxn];

long long prime[maxn], cnt;

long long fenjie[55], pr_cnt;

void get_prime ()

}}void work (long long num)

}if (num > 1)

fenjie[++pr_cnt] = num;

}int count (int num, long long &mul)

}return ans;

}long long solve (long long max)

if (solve (l) == k) printf ("%lld\n", l);

else printf ("%lld\n", r);

}return 0;

}

POJ 2773 二分 容斥原理

給m k 求與m互質的第k個數 1 m 1000000 k 1 k 100000000 k比較大,對於乙個數n,1到n以內和m互質的數可以通過容斥原理很快算出來,並且隨n遞增 因此二分k就好了 include include include include include includeusing ...

poj2773 容斥原理

這個題的意思是給你兩個數m,k,讓你求出與m互質的第k個數,設想對於乙個數r,我們可以求出小於等於r與m互質的數的個數,那麼我們就可以使用二分很快的求解。假設我們把m唯一分解 m p1 a1 p2 a2 pi ai,那麼小於等於r與m互質的數中不應該有p1 p2 pi這些因子,因此問題轉化成求解小於...

HDU3388 二分 容斥原理

題目 coprime 題意 給三個數m,n,k,0 思路 二分 容斥原理 由於所找的數與m,n互質,那麼這個數不能含有m,n所包含的素因子。但是k很大,不可能乙個乙個生成。於是二分,找到最小 的x,使得小於或等於x的數中滿足條件的 數的個數大於或等於k,則這個最小值即為答案。在判斷小於或等於x的數中...