码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 920G(二分+容斥)

时间:2018-02-04 00:34:13      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:isp   span   pre   strong   splay   def   技术分享   分享图片   因数分解   

题意:

  定义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(二分+容斥)

标签:isp   span   pre   strong   splay   def   技术分享   分享图片   因数分解   

原文地址:https://www.cnblogs.com/wmrv587/p/8410977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!