hdu4135---Co-prime(容斥原理)
来源:互联网 发布:淘宝客推广群的广告词 编辑:程序博客网 时间:2024/06/08 14:36
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
Hint
In the first test case, the five integers in range [1,10] which are relatively prime to 2 are {1,3,5,7,9}.
Source
The Third Lebanese Collegiate Programming Contest
Recommend
lcy | We have carefully selected several similar problems for you: 1796 1434 3460 1502 4136
先考虑区间[1, x]里和n不互质的数个数
考虑n的每个素因子
可以被某个素因子整除的数个数为(int)x / pi
但是不能这么单纯算,某些数会被多次统计
用容斥来搞
这个数的素因子不多
所以可以状压来搞出所有组合然后 奇加偶减
/************************************************************************* > File Name: hdu4135.cpp > Author: ALex > Mail: zchao1995@gmail.com > Created Time: 2015年05月26日 星期二 20时37分52秒 ************************************************************************/#include <functional>#include <algorithm>#include <iostream>#include <fstream>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <queue>#include <stack>#include <map>#include <bitset>#include <set>#include <vector>using namespace std;const double pi = acos(-1.0);const int inf = 0x3f3f3f3f;const double eps = 1e-15;typedef long long LL;typedef pair <int, int> PLL;vector <int> fac;LL calc(LL m) { int n = fac.size(); LL ans = 0; for (int i = 1; i < (1 << n); ++i) { int cnt = 0; int getf = 1; for (int j = 0; j < n; ++j) { if (i & (1 << j)) { getf *= fac[j]; ++cnt; } } if (cnt % 2) { ans += (m / getf); } else { ans -= (m / getf); } } return m - ans;}int main() { int t, icase = 1; scanf("%d", &t); while (t--) { LL l, r; int n; cin >> l >> r >> n; fac.clear(); for (int i = 2; i * i <= n; ++i) { if (n % i == 0) { fac.push_back(i); while (n % i == 0) { n /= i; } } } if (n > 1) { fac.push_back(n); } cout << "Case #" << icase++ << ": " << calc(r) - calc(l - 1) << endl; } return 0;}
- HDU4135 Co-prime【容斥原理】
- hdu4135---Co-prime(容斥原理)
- hdu4135 co-prime(容斥原理)
- HDU4135 Co-prime(容斥原理)
- hdu4135(容斥原理)Co-prime
- hdu4135 Co-prime(容斥)
- hdu4135 Co-prime(容斥原理的应用)
- hdu4135--Co-prime(欧拉函数+容斥原理)
- HDU4135-Co-prime-数论(容斥原理-模板)
- HDU4135——Co-prime(数论,容斥原理)
- hdu4135 Co-prime(容斥原理两种写法)
- HDU4135 Co-prime【容斥原理】3方法
- hdu4135 Co-prime(分解质因数,容斥)
- hdu4135——Co-prime(容斥原理求区间互素)
- (hdu4135)Co-prime(容斥定理+队列)
- hdu4135 容斥原理
- HDU4135容斥原理
- hdu4135 容斥原理
- 数据库作业第五章
- linux下各文件夹的用途和功能
- Android 你应该知道的学习资源 进阶之路贵在坚持
- 筛法求大量素数
- kafka Windows客户端Linux服务器---转
- hdu4135---Co-prime(容斥原理)
- shell trap
- Spring/SpringMVC在启动完成后执行方法
- Hadoop之MapReduce-自定义排序编程
- session的存储方式和配置
- Unity协同程序
- 支付宝即时到账接口
- 新手学JAVA(七)----Override VS Overload
- Unity3D 获取控件四个角在屏幕上的坐标