POJ 2773 Happy 2006 (二分答案+容斥)
題目連結:http://poj.org/problem?id=2773
題意:
求第k個與m互質的數;
分析:
很明顯隨著數的增大與m互質的數就越多,因此我們可以二分答案,
中間需要用到容斥原理求[1,mid]內與m互質的數的個數;
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
const int maxn = 100;
typedef long long LL;
int m,k,cnt;
int p[maxn];
void fen(int m)//對m因子分解
{
cnt=0;
for(int i=2;i*i<=m;i++){
if(m%i==0){
p[cnt++]=i;
while(m%i==0)
m/=i;
}
}
if(m>1) p[cnt++]=m;
}
LL calu(LL n)//容斥計數
{
LL sum=0;
for(LL i=1;i<(1<<cnt);i++){
LL mult=1,f=0;
for(int j=0;j<cnt;j++){
if(i&(1<<j)){
f++;
mult*=p[j];
}
}
if(f&1) sum+=n/mult;
else sum-=n/mult;
}
return n-sum;
}
int main()
{
while(~scanf("%d%d",&m,&k)){
LL l=0,r=((LL)1<<62);
LL mid,ans=0;
fen(m);
while(l<=r){//二分答案
mid=(l+r)/2;
LL sum = calu(mid);
if(sum>=k){
r=mid-1;
if(sum==k) ans=mid;
}
else l=mid+1;
}
printf("%I64d\n",ans);
}
return 0;
}
相關文章
- POJ 2773 Happy 2006 (分解質因數+容斥+二分 或 歐幾里德演算法應用)APP演算法
- POJ 3904 Sky Code (容斥+莫比烏斯反演)
- 容斥
- 容斥原理
- 反射容斥反射
- 【模板】容斥原理
- 容斥原理講解
- Min-Max 容斥
- lg容斥與反演
- 二分答案法
- 遊戲裡面的容斥原理遊戲
- c++ 二分答案C++
- 推公式+二分--poj1759公式
- 容斥原理學習筆記筆記
- 容斥原理——數學知識
- #19. 計數(容斥原理)
- HDU 4059 The Boss on Mars ( 容斥原理)
- 二分答案解題技巧
- 容斥定理 AtCoder——FizzBuzz Sum Hard
- HDU4390Number Sequence(容斥原理)
- HDU4407Sum ( 容斥原理)
- P4178 Tree——點分治 容斥
- POJ - 3041 Asteroids 【二分圖匹配】AST
- HDU 5468 Puzzled Elena(DFS序+容斥原理)
- Min-Max 容斥學習筆記筆記
- POJ 3041-Asteroids(二分圖匹配)AST
- HDU2841 Visible Trees (容斥原理)
- POJ 3233 Matrix Power Series(矩陣+二分)矩陣
- BZOJ2773 : ispiti
- bzoj 2655: calc [容斥原理 伯努利數]
- bzoj 3812: 主旋律 [容斥原理 狀壓DP]
- HDU 1695-GCD(容斥原理+尤拉函式)GC函式
- ZOJ 3868 GCD Expectation (容斥+莫比烏斯反演)GC
- HDU 1695 GCD (容斥 + 莫比烏斯反演)GC
- codeforces448D Multiplication Table(二分答案)
- POJ1743 Musical Theme(字尾陣列 二分)陣列
- 【二分答案】P2390 地標訪問
- POJ 1325-Machine Schedule(二分圖匹配-匈牙利演算法)Mac演算法