HDU 5135 Co prime(容斥原理)

2021-07-11 07:01:56 字數 658 閱讀 4874

題意:求[a,b]區間內與n互質的個數

容斥原理、先對n分解質因數,分別記錄每個質因數,那麼所求區間內與某個質因數不互質的個數就是n/r(i),假設r(i)是r的某個質因子 假設只有三個質因子,總的不互質的個數應該為p1+p2+p3-p1p2-p1p3-p2p3+p1p2*p3, 及容斥原理,pi代表n/r(i),即與某個質因子不互質的數的個數,當有更多個質因子的時候,可以用狀態壓縮解決,二進位制位上是1表示這個質因子被取進去了。如果有奇數個1就相加,反之則相減。

code:

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

typedef long long ll;

int t,cas;

ll a,b,n;

vectoradj;

ll solve(ll x,ll n)

if (n>1)

adj.push_back(n);

ll sum=0,value,cnt;

for (i=1;i<(1<

hdu4135 co prime 容斥原理

題意 給定a b c,求a到b區間內與c互質的數。思路 求a到b之間的與c互素的數,等價於求1到b之間與c互素的數減去1到a之間與c互素的數。求 中與 互質的數的個數都是用尤拉函式,但如果 比較大或者是求 中與 互質的數的個數等等問題,要想時間效率高的話還是先對n分解質因數然後用容斥原理,這裡可以用...

hdu 4135 Co prime 容斥原理

題目 大意 求區間 a,b 內與n互質的數的個數。分析 單純來逐個判斷互質統計結果肯定會超時,那麼可以對n素因子分解,以素因子的個數作為迴圈的上界 第二層迴圈 第一層是列舉素因子,運用容斥原理來統計不互質的個數,最後再用總數減去不互質的個數就是互質的個數。容斥原理也就是提供了這樣間接求解的思想 先不...

hdu4135Co prime 容斥原理

題意 給定a b c,求a到b區間內與c互質的數。分析 我們可以先轉化下 用 1,b 區間與n互質的數的個數減去 1,a 1 區間與n互質的數的個數,那麼現在就轉化成求 1,m 區間於n 互質的數的個數,如果要求的是 1,n 區間與n互質的數的個數的話,我們直接求出n的尤拉函式值即可,可是這裡是行不...