給m k
求與m互質的第k個數
(1 <= m <= 1000000), k (1 <= k <= 100000000).
k比較大,對於乙個數n,1到n以內和m互質的數可以通過容斥原理很快算出來,並且隨n遞增
因此二分k就好了
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const ll p =1000000007;
const long long n=1000000;
ll prim[100];
long long ok=0;
void ff(ll x)
}if (x!=1) prim[ok++]=x;
}ll m,k ;
ll judge(ll x)
return ans;
}int main()
return 0;
}
POJ2773 容斥 二分
題目要求和m互質的第k大。那麼二分區間,統計區間內和m互質的數個數,所有個數為k結果最小的就是答案。k比較大最初二分的右端點開大點。include include include include include include using namespace std define maxn 1111...
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的數中...