hdoj How many integers can you find 1796 (容斥原理&&DFS)
来源:互联网 发布:淘宝的销售金额 编辑:程序博客网 时间:2024/06/05 02:12
How many integers can you find
Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5994 Accepted Submission(s): 1719
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思路:先找出从1到n之间能被给定集合内的元素整除的数的个数,再减去能被两个元素同时整除的数的个数,再加上能同时被三个数整除的数的个数,再减去.........;通过这样可以发现,“奇加偶减”这一规律。运用dfs完成。#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[30];int kk;int ans;int n,m;long long gcd(long long a,long long b){return b==0?a:gcd(b,a%b);}void dfs(int k,int x,int d){x=a[k]/gcd(a[k],x)*x;if(d&1)ans+=(n-1)/x;elseans-=(n-1)/x;for(int i=k+1;i<kk;i++)dfs(i,x,d+1);}int main(){int i,j,x;while(scanf("%d%d",&n,&m)!=EOF){kk=0;while(m--){scanf("%d",&x);if(x!=0)a[kk++]=x;}ans=0;for(i=0;i<kk;i++)dfs(i,a[i],1);printf("%d\n",ans);}return 0;}
0 0
- hdoj How many integers can you find 1796 (容斥原理&&DFS)
- hdoj 1796 How many integers can you find(容斥原理)
- HDOJ 1796 How many integers can you find (容斥原理)
- hdoj 1796 How many integers can you find(容斥原理)
- HDU 1796 How many integers can you find(容斥原理+二进制/DFS)
- HDOJ 1796 How many integers can you find (容斥)
- 【 hdoj 1796】How many integers can you find 【容斥】
- HDOJ 1796 How many integers can you find 容斥原理
- hdoj 1796 How many integers can you find 【容斥原理】
- hdoj 1796 How many integers can you find<容斥原理>
- HDOJ 1796 How many integers can you find(容斥原理)
- How many integers can you find(容斥+dfs)
- HDOJ1796 How many integers can you find(dfs+容斥)
- 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 容斥原理
- poj1700Crossing River【贪心】
- iOS开发:获取文件路径总结
- 51nod 1352 集合计数 (扩展欧几里得)
- Web.xm的l配置加载顺序
- Linux 下 socket 高并发分析与优化
- hdoj How many integers can you find 1796 (容斥原理&&DFS)
- anaconda 安装pyspider出错
- 【数据结构和算法】排序算法之二:选择排序和堆排序
- 经典数据交换
- QUT——XiaoCai (签到未成功)
- Java方法重载和方法重写的区别介绍
- Git的使用说明
- angularJS学习之路(十七)---自定义指令
- ElasticSearch中分词器组件配置详解