hdu 1796 How many integers can you find (容斥原理)
来源:互联网 发布:php字符串替换 第一个 编辑:程序博客网 时间:2024/05/16 18:41
计数在<n的整数中所有能整除给出集合中某个数的数的个数,ans=x1-x2+x3-x4.....(xi表示能整除集合中i个数的数的个数,用容斥原理,这里就是“奇加偶减”)
一个数整除i个数,只要能整除这i个数的最小公倍数就行了,dfs枚举每i个数的最小公倍数
#include<stdio.h>#include<string.h>#define MAXN 15int a[MAXN],n,m,ans;int gcd(int a,int b) {return b==0?a:gcd(b,a%b);}int lcm(int a,int b) {return a/gcd(a,b)*b;}int k;void dfs(int p,int cnt,int val){ if(cnt==0) { val=(n-1)/val; k&1?ans+=val:ans-=val; return ; } if(p>=m) return ; if(m-p+1<cnt) return ; int t=lcm(val,a[p]); if(t<n) dfs(p+1,cnt-1,t); dfs(p+1,cnt,val);}int main(){ while(scanf("%d%d",&n,&m)!=EOF) { for(int i=0;i<m;i++) { scanf("%d",&a[i]); if(!a[i]) { m--; i--; } } ans=0; for(int i=1;i<=m;i++) { k=i; dfs(0,i,1); } printf("%d\n",ans); } return 0;}
0 0
- hdu-1796-How many integers can you find(容斥)
- HDU 1796 How many integers can you find 【容斥】
- HDU 1796 How many integers can you find 容斥原理
- 【容斥原理】HDU-1796-How many integers can you find
- HDU 1796 How many integers can you find(容斥原理)
- hdu 1796 How many integers can you find(容斥原理)
- HDU 1796 容斥原理 How many integers can you find
- hdu 1796 How many integers can you find(容斥原理)
- hdu 1796 How many integers can you find (容斥原理)
- hdu 1796 How many integers can you find 容斥原理
- HDU 1796 How many integers can you find(组合数学-容斥原理)
- HDU 1796 How many integers can you find(组合数学-容斥原理)
- hdu 1796 How many integers can you find(容斥原理)
- hdu 1796 How many integers can you find[经典容斥原理]
- [容斥原理] hdu 1796 How many integers can you find
- hdu 1796 How many integers can you find【容斥原理】
- HDU 1796 How many integers can you find(容斥原理)
- HDU 1796 - How many integers can you find(容斥原理)
- DynamicJasper创建动态报表
- 火锅减肥杜是风格的收费更好个回复个好复古刚好是冬天
- java web学习笔记--Eclipse的常见操作
- UML类图符号 各种关系说明以及举例
- 腾讯、优酷视频地址解析(转)
- hdu 1796 How many integers can you find (容斥原理)
- Cython的学习方法
- 大神与三位小伙伴
- 二叉树的层次遍历 数组版
- R语言数据挖掘中常用函数
- java web学习笔记(二)---程序调试
- 飞过的人故意让他好大方的风格化大方更好的风格回个话功夫
- 于人天涯风格化德国的更好的风格的个方法的个复古
- TCP协议三次握手过程分析