HDU 4135 容斥原理
来源:互联网 发布:枪火兄弟连2 mac修改 编辑:程序博客网 时间:2024/06/06 01:37
</pre><pre name="code" class="cpp">#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>using namespace std;long long T, A, B, N, kase;vector<long long> GetPrimefun(long long n){std::vector<long long> v;for (long long i = 2; i * i <= n; i++)if (n % i == 0){v.push_back(i);while (n % i == 0) n /= i;}if (n > 1) v.push_back(n);return v;}long long solve(long long x, long long n){std::vector<long long> v = GetPrimefun(n);long long sum = 0, tmp, cnt;for (long long i = 1; i < (1 << v.size()); i++){tmp = 1, cnt = 0;for (long long j = 0; j < v.size(); j++)if (i & (1LL << j)) tmp *= v[j], cnt++;sum += (cnt & 1 ? 1 : -1) * x / tmp;}return x - sum;}int main(int argc, char const *argv[]){scanf("%d", &T);while (T--){scanf("%lld%lld%lld", &A, &B, &N);printf("Case #%lld: %lld\n", ++kase, solve(B, N) - solve(A - 1, N));}return 0;}
求(a,b)区间与n互质的数的个数.即为求(1,m)区间于n互质的数的个数
但与欧拉函数不同,使用容斥原理。
先对n分解质因数,分别记录每个质因数, 那么所求区间内与某个质因数不互质的个数就是n / r(i),假设r(i)是r的某个质因子 假设只有三个质因子, 总的不互质的个数
为:p1+p2+p3-p1*p2-p1*p3-p2*p3+p1*p2*p3
当P的数量太多时,就需要用位运算表示了。
0 0
- 【容斥原理】HDU 4135
- hdu 4135 容斥原理
- hdu 4135 (容斥原理)
- HDU 4135 容斥原理
- hdu 4135 容斥原理
- hdu 4135 容斥原理
- hdu 4135(容斥原理)
- hdu 4135 容斥原理
- HDU 4135 容斥原理
- hdu 4135 容斥原理
- hdu 4135(容斥原理)
- hdu 4135 容斥原理 第一道容斥原理
- hdu 1796 hdu 4135 容斥原理
- [容斥原理] hdu 4135 Co-prime
- 【HDU】4135 Co-prime 容斥原理
- hdu 4135 Co-prime(容斥原理)
- hdu 4135 Co-prime 容斥原理
- hdu 4135 Co-prime【容斥原理】
- LeetCode笔记:237. Delete Node in a Linked List
- 计算机组成 数制
- 第四周项目4-程序分析(3)
- Navicat for MySQL每次打开数据库时,总是弹出“取得ER图表信息”框的解决方法
- Android Studio关于百度地图so库的配置问题
- HDU 4135 容斥原理
- 推荐算法分类:协同过滤、聚类、分类
- 三角形1
- 顺序表的基本操作(new)
- Java产生唯一的随机数
- HDOJ 5650-so easy
- OC特有的方法(点语法,)
- 为某个软件分配管理员权限
- img与容器下边界的空隙(缝隙) img与div(block类型元素)下边界有距离(或者叫缝隙、空隙)的解决方法