容斥 - HDU 4135 Co-prime
2024-08-25 00:27:22
Co-prime
Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=4135
推荐: 容斥原理
Mean:
给你一个区间[l,r]和一个数n,求[l,r]中有多少个数与n互素。
analyse:
经典的容斥原理题。
如果题目是说求1~n中有多少个数与n互质,我们一定反应应该是欧拉函数。
但是如果n特别大或者说是求某个给定区间与n互素的个数,这时用欧拉函数就行不通。
容斥做法:首先我们可以在O(sqrt(n))内求出n的所有质因数p1,p2,p3....pk。
对于每个质因数pi,1~r中不与它互素的个数就是r/pi。
然后就是如何容斥了?
首先我们来分析,n<=1e9,那么n的质因数的个数最多不超过9个,那么我们就可以对n的所有质因数进行组合来计算。
例如:30的质因数有3个(2,3,5),我们可以用二进制来表示所有的情况:
001: 5
010: 3
011: 3 5
100: 2
101: 2 5
110: 2 3
111: 2 3 5
假设有k个质因数,那么只需用2^k-1个数的二进制来表示即可。
剩下的就是容斥了,设cnt为1的个数(选中的质因数的个数),当cnt为奇数,sum加上此次的;cnt为偶数,sum减去此次的。
具体看代码。
Time complexity: O(N)
Source code:
;)
)
n) ;
;;
)
;
) );
;
;
}
/*
)
n) ;
;;
)
;
) );
;
;
}
/*
*/
最新文章
- 有哪些LabVIEW快捷键让你相见恨晚
- 用js效果做的简单焦点图
- PHP之图像处理
- 关于Yaf的一些说明[转Yaf作者]
- C++之路进阶——codevs2404(糖果)
- How to get the underlying SSRS Report Query, reset query , add your own ranges and execute report [AX2012]
- IOS学习网站
- newsstand杂志阅读应用源码ipad版
- vector中的resize与 reserve
- 【转】[慢查优化]联表查询注意谁是驱动表 &; 你搞不清楚谁join谁更好时请放手让mysql自行判定
- 高级I/O函数(3)-tee、fcntl函数
- (2)入门指南——(3)为什么jquery工作的很好(Why jQuery works well)
- 分析java中clone()方法 (转载+修改)
- leetcode 60. Permutation Sequence(康托展开)
- 浅谈Hybrid技术的设计与实现(转)
- h5 做app时和原生交互的小常识。
- cf1051d 简单的状态压缩dp
- n维向量空间W中有子空间U,V,如果dim(U)=r dim(V)=n-r U交V !={0},那么U,V的任意2组基向量的组合必定线性相关
- 团队作业week9
- python的类
热门文章
- 小贝_redis高级应用-公布与订阅
- 聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类
- error: command 'gcc' failed with exit status 1 while installing eventlet
- JDBC 事务(二)回滚到保存点
- 教你在Ubuntu系统下保存屏幕亮度设置
- mysql(表类型的选择)
- LOSF海量小文件问题解决思路及开源库
- pandas set_index和reset_index的用法
- ui-router详解(二)ngRoute工具区别
- atitit.窗体静听esc退出本窗体java swing c# .net php