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) ;
     ;;
           )
                 ;
           ) );
     ;
     ;
}
/*

*/

最新文章

  1. 有哪些LabVIEW快捷键让你相见恨晚
  2. 用js效果做的简单焦点图
  3. PHP之图像处理
  4. 关于Yaf的一些说明[转Yaf作者]
  5. C++之路进阶——codevs2404(糖果)
  6. How to get the underlying SSRS Report Query, reset query , add your own ranges and execute report [AX2012]
  7. IOS学习网站
  8. newsstand杂志阅读应用源码ipad版
  9. vector中的resize与 reserve
  10. 【转】[慢查优化]联表查询注意谁是驱动表 &amp; 你搞不清楚谁join谁更好时请放手让mysql自行判定
  11. 高级I/O函数(3)-tee、fcntl函数
  12. (2)入门指南——(3)为什么jquery工作的很好(Why jQuery works well)
  13. 分析java中clone()方法 (转载+修改)
  14. leetcode 60. Permutation Sequence(康托展开)
  15. 浅谈Hybrid技术的设计与实现(转)
  16. h5 做app时和原生交互的小常识。
  17. cf1051d 简单的状态压缩dp
  18. n维向量空间W中有子空间U,V,如果dim(U)=r dim(V)=n-r U交V !={0},那么U,V的任意2组基向量的组合必定线性相关
  19. 团队作业week9
  20. python的类

热门文章

  1. 小贝_redis高级应用-公布与订阅
  2. 聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类
  3. error: command 'gcc' failed with exit status 1 while installing eventlet
  4. JDBC 事务(二)回滚到保存点
  5. 教你在Ubuntu系统下保存屏幕亮度设置
  6. mysql(表类型的选择)
  7. LOSF海量小文件问题解决思路及开源库
  8. pandas set_index和reset_index的用法
  9. ui-router详解(二)ngRoute工具区别
  10. atitit.窗体静听esc退出本窗体java swing c# .net php