hdu 1695 容斥原理
来源:互联网 发布:进入网络女主播 编辑:程序博客网 时间:2024/05/16 18:08
我的第一道容斥原理...想法很直接,利用容斥原理求出[l,r]范围内与n互质的数的个数,然后枚举n,想法直接的代价就是时间消耗大,我用了1000ms..
比较好的容斥原理学习资料http://www.cnblogs.com/acSzz/archive/2012/11/18/2775923.html
代码:
#include<iostream>#include<vector>#include<algorithm>using namespace std;long long work(int n,int l,int r)//利用容斥原理,求l,r区间内与n互素的数的个数 { vector<int> p; int i,msk,bits,mult,cur,bound,t=r-l+1; long long sum=0; for(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); bound=1<<p.size(); for(msk=1;msk<bound;++msk) { mult=1; bits=0; for(i=0;i<p.size();++i) { if(msk&(1<<i)) { bits++; mult*=p[i]; } } cur=r/mult-(l-1)/mult; if(bits&1) sum+=cur; else sum-=cur; } return t-sum;}int main(){ int a,b,c,d,k,T,i,j,cas=0; long long ans; scanf("%d",&T); while(T--) { scanf("%d %d %d %d %d",&a,&b,&c,&d,&k); cas++; ans=0; if(k!=0) { b/=k,d/=k; if(b>d) swap(b,d); for(i=1;i<=b;++i) ans+=work(i,i,d); } printf("Case %d: %I64d\n",cas,ans); } return 0;}
- hdu 1695 容斥原理
- HDU 1695 容斥原理
- HDU 1695 容斥原理
- hdu 1695 hdu 2841 容斥原理
- HDU 1695:GCD _容斥原理
- hdu 1695 数论+容斥原理
- HDU 1695 GCD 【数论,容斥原理】
- Hdu 1695 GCD (数论 容斥原理)
- [容斥原理] hdu 1695 GCD
- 【容斥原理】HDU 1695 GCD
- HDU-1695-GCD +素数+容斥原理
- hdu 1695 GCD 容斥原理
- HDU 1695 GCD (容斥原理)
- hdu 1695 GCD(容斥原理)
- hdu 1695 GCD(容斥原理)
- 【容斥原理】HDU 4135
- hdu 4135 容斥原理
- hdu 4336 容斥原理
- DBVERIFY 工具的使用
- C++中static的使用方法
- 基于Linux下 Oracle 备份策略(RMAN)
- 使用RMAN迁移文件系统数据库到ASM
- URL传参乱码总结
- hdu 1695 容斥原理
- Android Design Demo 策略模式 TextView HTML封装 加下划线加图片加点击事件
- hadoop的源码分析之RPC(Remote Procedure Call Protocol)
- Leetcode: Binary Tree Level Order Traversal: One Queue
- bootmgr NTLDR 相关资料
- 关于二分查找
- Binary Tree Level Order Traversal II
- leetcode 17: Decode Ways
- 中关村攒机的没落