hdu 4135 Co-prime(容斥原理)
2017-03-20 21:40
232 查看
Co-prime
Problem Description
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.
Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
Input
The first line on input contains T (0 < T <= 100) the number of test cases, each of the next T lines contains three integers A, B, N where (1 <= A <= B <= 1015) and (1 <=N <= 109).
Output
For each test case, print the number of integers between A and B inclusive which are relatively prime to N. Follow the output format below.
Sample Input
2
1 10 2
3 15 5
Sample Output
Case #1: 5
Case #2: 10
HintIn the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.
不懂容斥原理的话,这有容斥原理的上手题:点击打开链接
有两个原理:
1.在[1,m]之间与m互质的数的个数=[1,m]之间的总个数-[1,m]之间与n不互质的数的个数
2.[1,n]之间与m互质的数的数量 = n - (包含一个质因子的数的个数)+(包含2个质因子的数的个数)-(包含3个质因子的数的个数)+(包含4个质因子的数的个数).....
代码:
Problem Description
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.
Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
Input
The first line on input contains T (0 < T <= 100) the number of test cases, each of the next T lines contains three integers A, B, N where (1 <= A <= B <= 1015) and (1 <=N <= 109).
Output
For each test case, print the number of integers between A and B inclusive which are relatively prime to N. Follow the output format below.
Sample Input
2
1 10 2
3 15 5
Sample Output
Case #1: 5
Case #2: 10
HintIn the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.
不懂容斥原理的话,这有容斥原理的上手题:点击打开链接
有两个原理:
1.在[1,m]之间与m互质的数的个数=[1,m]之间的总个数-[1,m]之间与n不互质的数的个数
2.[1,n]之间与m互质的数的数量 = n - (包含一个质因子的数的个数)+(包含2个质因子的数的个数)-(包含3个质因子的数的个数)+(包含4个质因子的数的个数).....
代码:
#include<stdio.h> #include<vector> #include<algorithm> using namespace std; #define LL long long int vector<int>q; LL b[1000]; void div(int k)//对k分解质因子 { for(int i=2;i*i<=k;i++) { if(k%i==0) q.push_back(i); while(k%i==0) k/=i; } if(k>1) q.push_back(k); } //容斥原理计算[1,n]内有多少个与k互质的数 LL cont(LL n) { LL g=0,sum=n; b[++g]=1; for(LL i=0;i<q.size();i++) { LL t=g; for(LL j=1;j<=g;j++) { b[++t]=-q[i]*b[j]; sum+=n/b[t]; } g=t; } return sum; } int main() { int t,m=0; scanf("%d",&t); while(m<t) { q.clear(); LL a,b; int k; scanf("%lld%lld%d",&a,&b,&k); div(k); printf("Case #%d: %lld\n",cont(b)-cont(a-1)); } return 0; }
相关文章推荐
- 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 +hdu 2841 Visible Trees(容斥原理)
- 【容斥原理】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(容斥原理)
- HDU-4135 Co-prime 容斥原理
- hdu 4135 Co-prime 容斥原理