数学 ( 容斥原理&&求区间内互质数的个数)——Co-prime ( HDU 4135 )
来源:互联网 发布:维珍澳航 知乎 编辑:程序博客网 时间:2024/05/21 23:32
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=4135分析:
给出区间[A, B],求其中与m互质的数的个数。容斥原理:集合S中不含性质
P1,P2,...,Pm 的对象个数:|A1∩A2∩...∩Am|=|S|−∑|Ai|+∑|Ai∩Aj|−∑|Ai∩Aj∩Ak|+...+(−1)m|A1∩A2∩...∩Am| 题解:
利用容斥定理选出[1, X]区间内和m互质的数的个数。代码:
LL Find(LL num, LL m)//找出[1, num]与m互质的数的个数{ LL ans=0,tmp, flag; for(LL i=1;i<(LL)(1<<m);i++) //用二进制来1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是011,表示第2、3个因子被用到 { tmp = 1; flag = 0; for(LL j=0;j<=m;j++) { if(i & (LL)(1<<j) ) //判断目前第几个因子被用到 flag++,tmp*=prime[j]; } cout << tmp << endl; if(flag&1) //容斥原理,奇加偶减 ans+=num/tmp; else ans-=num/tmp; } return ans;}
- 参考代码:
#include<iostream>#include <stdlib.h>#include <algorithm>#include <stdio.h>#include<cstring>using namespace std;typedef long long LL;const int Max=100009;LL T,A,B,N;LL prime[66];LL Find(LL num, LL m){ LL ans=0,tmp, flag; for(LL i=1;i<(LL)(1<<m);i++) //用二进制来1,0来表示第几个素因子是否被用到,如m=3,三个因子是2,3,5,则i=3时二进制是011,表示第2、3个因子被用到 { tmp = 1; flag = 0; for(LL j=0;j<=m;j++) { if(i & (LL)(1<<j) ) //判断目前第几个因子被用到 flag++,tmp*=prime[j]; } cout << tmp << endl; if(flag&1) //容斥原理,奇加偶减 ans+=num/tmp; else ans-=num/tmp; } return ans;}int main(){ scanf("%d",&T); int t=0; while(T--) { scanf("%lld%lld%lld", &A, &B, &N); int m=0; for(int i=2;i*i<=N;i++) { if( N && N % i == 0) prime[m++] = i; while(N&&N%i==0) N/=i; } if(N>1) prime[m++] = N; printf("Case #%d: %lld\n",++t,(B-Find(B, m))-(A-1-Find(A-1,m))); } return 0;}
0 0
- 数学 ( 容斥原理&&求区间内互质数的个数)——Co-prime ( HDU 4135 )
- HDU 4135 Co-prime 区间内与n互质的个数 容斥(入门
- 【容斥原理-求区间内与n互质的数】HDOJ Co-prime 4135
- HDU 4135 Co-prime(容斥原理求互质数)
- HDU 4135:Co-prime 容斥原理求(1,m)中与n互质的数的个数
- hdu4135——Co-prime(容斥原理求区间互素)
- HDU 4135 Co-prime (容斥原理, 数学)
- hdu 1695 hdu 4135 容斥原理求1-n 区间内与r互质的个数
- HDU 4135-Co-prime(容斥求区间内与N互质的个数(队列||位运算))
- [容斥原理] hdu 4135 Co-prime
- 【HDU】4135 Co-prime 容斥原理
- hdu 4135 Co-prime(容斥原理)
- hdu 4135 Co-prime 容斥原理
- hdu 4135 Co-prime【容斥原理】
- hdu 4135 Co-prime (容斥原理)
- 【容斥原理】HDU 4135 Co-prime
- HDU 4135 Co-prime (容斥原理)
- hdu 4135 Co-prime(容斥原理)
- find_if_not 源码剖析
- 神经网络:学习(2)
- spring (2.5, 3.2) 在 jre 1.8下的fix
- LinkedList的源码分析
- Kafka集群搭建02-Kafka 集群部署
- 数学 ( 容斥原理&&求区间内互质数的个数)——Co-prime ( HDU 4135 )
- listview添加footerview的注意事项
- poj 2488 A Knight's Journey
- 树莓派与电脑之间文件传输
- POJ2524-Ubiquitous Religions
- 1105. Spiral Matrix (25)-PAT甲级真题
- 使用IntelliJ IDEA 14和Maven创建java web项目
- 【杭电oj2544】最短路
- 强烈推荐android studio用的几个插件