hdu3388Coprime 二分 容斥原理

2022-09-23 14:03:10 字數 672 閱讀 9432

//找第k個和n,m互質的數

//由容斥原理可得

//在[1,x]範圍內且與n不互質的數的個數為:

//對於所有的n的素數因子:和乙個素數因子不互質的個數-兩個素數因子相乘的個數+三個素數因子相乘的個數-.....

//對於x越大,在[1 , x]範圍內的與n,m互質的數越多,所以存在單調性,可以用二分找到剛好有k個數和n,m互質

#include

#include

#include

#include

using namespace std ;

typedef __int64 ll ;

const int maxn = 100010 ;

const int inf = 1e9 ;

mapma ;

ll p[maxn] ;

int len ;

void getprime(ll n)

while(n%i == 0)n/=(ll)i ;

}if(n > 1 && !ma[n])

}ll dfs(int pos , ll n)

ll find(ll l , ll r , ll num )

return l ;

}int main()

return 0;

}

HDU3388 Coprime(二分 容斥)

題意 給你n m n,mn,m,讓你找到第k kk個與n nn和m mm互素的數。思路 範圍比較大,我們可以先找出n nn和m mm的質因子,然後二分答案。每次容斥判定mid midmi d是第幾個與n nn和m mm互質的數字。include include include include inc...

HDU3388 二分 容斥原理

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

hdu4135 Co prime 互素統計

題意 統計 l,r 中與m互素的數的個數 解法 1.求字首 1,r 中與m互素的個數 2.求反面 不互素的個數,再將m分解質因子,轉化為整除問題 a,m 1,則m至少有乙個質因子整除a。ans a 1 a2 ak ai 為 1,r 中m的第i個質因子的倍數集合 複雜度 o m logm 與區間大小無...