njust1922 count_prime(容斥原理)
来源:互联网 发布:js取消注释快捷键 编辑:程序博客网 时间:2024/06/05 19:03
njust1922
题目
https://icpc.njust.edu.cn/Problem/Local/1922/
思路
模版:http://cse.seu.edu.cn/PersonalPage/hxue/downloadTalk/download4/%E5%AE%B9%E6%96%A5%E5%8E%9F%E7%90%86%E7%9A%84%E5%BA%94%E7%94%A8-%E9%99%88%E5%85%83%E5%A9%A7%EF%BC%8C%E9%BB%84%E4%BA%9A%E6%BE%8E.pdf
“当有更多个质因子的时候,可以用状态压缩解决,二进制位上是1表示这个质因子被取进去了。如果有奇数个1就相加,反之则相减。”
代码
#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;ll solve(ll n,ll r){ vector<ll> p; ll sum=0; for(ll i=2; i*i<=n; i++) if(n%i==0) { p.push_back(i); while(n%i==0) n/=i; } if(n>1) p.push_back(n); for(ll msk=1; msk<(1<<p.size()); msk++) { ll mult=1,bits=0; for(ll i=0; i<p.size(); i++) { if(msk&(1<<i)) { mult*=p[i]; bits++; } } ll cur=r/mult; if(bits&1) sum+=cur; else sum-=cur; } return r-sum;}int main(){ int T; scanf("%d",&T); while(T--) { ll a,b,n; scanf("%lld %lld %lld",&a,&b,&n); printf("%lld\n",solve(n,b)-solve(n,a-1)); } return 0;}
0 0
- njust1922 count_prime(容斥原理)
- NJUST 1922 count_prime【容斥原理】
- count_prime(容斥)
- 南京理工大学第八届程序设计大赛-count_prime(容斥原理)
- njust1922(容斥原理统计区间内与n互质的个数)
- 南京理工大学第八届程序设计大赛(校外镜像) - count_prime (容斥原理)
- count_prime----容斥+唯一分解定理
- 南京理工校赛 c count_prime 容斥原理 求(1,r)与n互质模板
- 容斥原理
- 容斥原理 POJ3904
- 【容斥原理】八
- 【八】容斥原理
- 广义容斥原理
- 容斥原理
- 容斥原理 专题
- 容斥原理 专题
- hdu4390 容斥原理
- hdu1695 容斥原理
- GDOI最后一次终极模拟赛总结
- 数据库无法启动
- java基础笔记02
- DSP 连不上 JTAG, 'SC_ERR_PATH_BROKEN', 关注EMU1 EMU0
- 冒泡排序
- njust1922 count_prime(容斥原理)
- 【算法】打印N对合理括号组合
- java设计模式-单例模式
- 数据库事务隔离级别
- POJ3624 Charm Bracelet
- java date 各种转化
- Linux新手常见问题总结(ubuntu)
- 1006 Problem F
- IOS之CAAnimation基本动画