Codeforces 920G(二分+容斥)

Posted 人活着就是为了Chelly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 920G(二分+容斥)相关的知识,希望对你有一定的参考价值。

题意:

  定义F(x,p)表示的是一个数列{y},其中gcd(y,p)=1且y>x

  给出x,p,k,求出F(x,p)的第k项

  x,p,k<=10^6

分析:

  很容易想到先二分,再做差

  然后问题就变成了[1,x]内有多少个数是和p互质的

  我们可以先将p质因数分解,然后用这些数组合去在[1,x]容斥就行了

技术分享图片
 1 long long cal(long long x)
 2 {
 3     int n=f.size();
 4     long long ans=0;
 5     for(int i=0;i<(1<<n);++i)
 6     {
 7         long long num=1;
 8         int sgn=1;
 9         for(int j=0;j<n;++j)
10             if((1<<j)&i) num*=f[j],sgn*=-1;
11         ans+=sgn*(x/num);
12     }
13     return ans;
14 }
View Code

 

以上是关于Codeforces 920G(二分+容斥)的主要内容,如果未能解决你的问题,请参考以下文章

[cf920G][容斥原理+二分]

Codeforces 483B - Friends and Presents(二分+容斥)

Codeforces483B. Friends and Presents(二分+容斥原理)

Codeforces Round #621 (Div. 1 + Div. 2)E(二分查找,枚举分界点,容斥原理)

[CF920G]List Of Integers

Codeforces 626C Block Towers「贪心」「二分」「数学规律」