http://acm.hdu.edu.cn/showproblem.php?pid=4135

求[A,B]内与N互素的数字个数

首先对N分解质因数,对于一个质因数,1-n与它不互素的数字个数是n/(这个质因数),这样可以得到m个集合(m是N分解出的质因数的个数),对这m个集合用容斥原理解出来它们的并集,再用总数去减

这里学习了用位运算求解容斥原理,非常简单,和状压dp中的位运算差不多感觉,注意容斥中奇加偶减

#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std; typedef __int64 ll; ll A,B,N; vector <ll> v; ll gao(ll n){
int m=v.size();
ll res=;
for(int i=;i<(<<m);i++){
int cnt=;
ll temp=;
for(int j=;j<m;j++){
if(i&(<<j)){
cnt++;
temp*=v[j];
}
}
if(cnt&)res+=n/temp;
else res-=n/temp;
}
return n-res;
} int main(){
int T;
scanf("%d",&T);
for(int cas=;cas<=T;cas++){
scanf("%I64d%I64d%I64d",&A,&B,&N);
v.clear();
for(ll i=;i*i<=N;i++){
if(N%i==){
v.push_back(i);
while(N%i==)N/=i;
}
}
if(N>)v.push_back(N);
printf("Case #%d: %I64d\n",cas,gao(B)-gao(A-));
}
return ;
}

最新文章

  1. Css动画总结
  2. javaweb 拦截器报错
  3. 修改cms 管理栏目路径
  4. (Python )控制流语句if、for、while
  5. android设置系统模式
  6. VC与JavaScript交互(三) --- CWebPage类调用javascript函数(给js函数传参,并取得返回值)
  7. XML处理
  8. [设计模式2]--模板(Template)模式
  9. 《ENVI下遥感影像自然真彩色合成方法》——TM、spot5
  10. 51nod贪心算法入门-----活动安排问题
  11. JAVA继承:编译与运行的关系(编译看左边,运行看右边)
  12. 自己实现一个each迭代器
  13. SpringMVC中Controller的方法返回值
  14. Nginx/LVS/HAProxy 负载均衡软件的优缺点详解
  15. Android ConstraintLayout 布局警告
  16. WCF中的ServiceHost初始化两种方式
  17. classifier in maven
  18. [POI 2014]RAJ-Rally
  19. java中重要的多线程工具类
  20. Python 中的语句

热门文章

  1. 探究linux文件
  2. hadoop主节点(NameNode)备份策略以及恢复方法
  3. struts2视频学习笔记 07-08(为Action的属性注入值,指定需要Struts 2处理的请求后缀,常用常量)
  4. 百度Tera数据库介绍——类似cassandra,levelDB
  5. [转]POJO中使用ThreadLocal实现Java嵌套事务
  6. loadrunner 参数化数据更新方式
  7. 随机分类器的ROC和Precision-recall曲线
  8. linux 安装软件,卸载软件 等的几种方式
  9. iOS 消息推送原理及实现Demo
  10. 从python中copy与deepcopy的区别看python引用