Hdu1796 How many integers can you find
来源:互联网 发布:淘宝双11是什么意思 编辑:程序博客网 时间:2024/05/17 10:55
How many integers can you find
Time Limit : 12000/5000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 95 Accepted Submission(s) : 30
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Now you get a number N, and a M-integers set, you should find out how many integers which are small than N, that they can divided exactly by any integers in the set. For example, N=12, and M-integer set is {2,3}, so there is another set {2,3,4,6,8,9,10}, all the integers of the set can be divided exactly by 2 or 3. As a result, you just output the number 7.
Input
There are a lot of cases. For each case, the first line contains two integers N and M. The follow line contains the M integers, and all of them are different from each other. 0<N<2^31,0<M<=10, and the M integer are non-negative and won’t exceed 20.
Output
For each case, output the number.
Sample Input
12 22 3
Sample Output
7
Author
Source
2008 “Insigma International Cup” Zhejiang Collegiate Programming Contest - Warm Up(4)
——————————————————————————————————
题目的意思是给出一个n和m个数求小于n的有多少个是m个数任意个的倍数
求出,每个数和他们任意的倍数的个数利用容斥原理解决 在求个数时可以用DFS
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <vector>#include <queue>#include <stack>#include <map>#include <set>#include <cmath>using namespace std;#define LL long longconst int inf=0x7fffffff;LL a[100];struct node{ LL num; int cnt;}ans[100005];int tot,m;LL n;LL gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}void dfs(int pos,LL lcm,int cnt){ if(pos>=m) { if(cnt==0) return; ans[tot].num=(n-1)/lcm; ans[tot++].cnt=cnt; return; } if(a[pos]==0) dfs(pos+1,lcm,cnt); else { dfs(pos+1,lcm*a[pos]/gcd(lcm,a[pos]),cnt+1); dfs(pos+1,lcm,cnt); }}int main(){ while(~scanf("%lld%d",&n,&m)) { for(int i=0; i<m; i++) { scanf("%lld",&a[i]); } tot=0; dfs(0,1,0); LL ass=0; for(int i=0; i<tot; i++) { if(ans[i].cnt%2) ass+=ans[i].num; else ass-=ans[i].num; } printf("%lld\n",ass); } return 0;}
阅读全文
0 0
- hdu1796 How many integers can you find
- HDU1796-How many integers can you find
- hdu1796 How many integers can you find
- Hdu1796 How many integers can you find
- hdu1796 How many integers can you find----容斥原理
- hdu1796--How many integers can you find--容斥原理
- hdu1796 How many integers can you find(整除个数统计)
- hdu1796---How many integers can you find(容斥原理)
- HDU1796 How many integers can you find【容斥定理】
- 容斥定理 hdu1796 How many integers can you find
- hdu1796 How many integers can you find 容斥原理
- hdu1796 How many integers can you find 容斥原理
- 【容斥原理】HDU1796 How many integers can you find
- hdu1796 How many integers can you find(容斥)
- HDU1796 How many integers can you find[容斥定理]
- HDU1796 How many integers can you find (容斥原理)
- HDU1796 How many integers can you find(容斥)
- hdu1796 How many integers can you find (容斥原理)
- Android Studio new raw/assets file
- 损失函数整理
- 【Android 多媒体应用】使用MediaCodec解码使用AudioTrack播放音频数据
- Hadoop系列-MapReduce设计思想与原理机制(九)
- 0001+1=0002
- Hdu1796 How many integers can you find
- map的详细用法
- 说说 JavaScript 事件流之模拟事件
- Sql语句优化总结
- DE(差分进化)优化算法MATLAB源码详细中文注解
- Redis Cluster 简介与部署
- 【jQuery源码浅析】(二)--jQuery的构造--$()
- jsp三大指令
- Android 4.2 InCallScreen UI浅析