容斥原理

来源:互联网 发布:成都卧龙大数据 苏明亮 编辑:程序博客网 时间:2024/04/28 04:51
一个区间范围内于某些数互质的有多少个
//递归写法LL sum;void dfs(int i,int nu,int x,int mu,LL b){//printf("%d %d %d %d %lld\n",i,nu,x,mu,b);if(nu==x){sum+=b/mu;return;}if(i==tmpCnt) return;dfs(i+1,nu+1,x,mu*tmpPrime[i],b);dfs(i+1,nu,x,mu,b);    }LL rong(LL x){LL s=0;for(int i=1;i<=tmpCnt;++i){sum=0;dfs(0,0,i,1,x);//printf("rong%d %lld\n",i,sum);if(i&1)s+=sum;elses-=sum;}//printf("%lld\n",s);return x-s;}

//迭代写法int rong(int n,int x){    int facn=enlur(x);    int ans=0;    for(int i=1;i<(1<<facn);++i)    {        int cnt=0,tmp=1;        for(int j=0;j<facn;++j)        {            if(i&(1<<j))            {                ++cnt;                tmp*=factor[j];            }        }        if(cnt&1) ans+=n/tmp;        else ans-=n/tmp;    }    return n-ans;}

O(n^2),n为质数的个数。

相关题目:

  1. count_prime
  2. hdu 4390 Number Sequence
  3. hdu 3388 Coprime


0 0