HDU 1796
来源:互联网 发布:一手邮箱数据 编辑:程序博客网 时间:2024/06/04 23:27
容斥的一个题,site巨巨讲的课的第一个题。入手后还是比较不错的题的,这个dfs如果不好理解一定要模拟一下
解题思路:容斥原理地简单应用。先找出1...n内能被集合中任意一个元素整除的个数,再减去能被集合中任意两个整除的个数,即能被它们两只的最小公倍数整除的个数,因为这部分被计算了两次,然后又加上三个时候的个数,然后又减去四个时候的倍数...所以深搜,最后判断下集合元素的个数为奇还是偶,奇加偶减
#include<cstdio>#include<cstring>#include<algorithm>#include<map>#include<vector>using namespace std;typedef long long LL;int n,m,a[30];LL ans;int cnt;LL gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}LL dfs(int x,LL b,int id){ b=a[x]/gcd(a[x],b)*b; if(id&1) ans+=(n-1)/b; else ans-=(n-1)/b; for(int i=x+1;i<cnt;i++) { dfs(i,b,id+1); }}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { int x; cnt=0; for(int i=1;i<=m;i++) { scanf("%d",&x); if(x!=0) { a[cnt++]=x; } } ans=0; for(int i=0;i<cnt;i++) { dfs(i,a[i],1); } printf("%d\n",ans); } return 0;}
0 0
- hdu 1796
- HDU 1796
- hdu 1796
- hdu-1796
- HDU 1796
- hdu 1796 hdu 4135 容斥原理
- HDU 1796 容斥
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- wav的基础知识介绍
- 查看 服务运行时间
- Cpp环境【NOIP2015 D1P2】【Viijos1979】【Code[VS] 4511】【CQYZOS3198】 信息传递
- ubuntu--FoxitReader不能使用中文输入法
- 面试/笔试_sizeof之应用实例
- HDU 1796
- 《Redis官方文档》用Redis构建分布式锁
- 使用两个栈模拟一个队列【C语言】
- Oracle主键自增(触发器实现)
- 软件测试:原理、方法与管理(读书笔记2)
- 2显示IP网络经过的路由器地址
- 使用VS2015创建和调用dll文件
- POJ1753 Flip Game(翻转问题且纯枚举暴力翻转)
- 配置maven ssm项目自动生成bean 访问不了数据库