HDU 1796 How many integers can you find(容斥原理)
来源:互联网 发布:如何做淘宝直通车 编辑:程序博客网 时间:2024/06/07 19:48
How many integers can you find
Time Limit: 12000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8059 Accepted Submission(s): 2403
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
wangye
Source
2008 “Insigma International Cup” Zhejiang Collegiate Programming Contest - Warm Up(4)
Recommend
wangye
题意:给你一个n和一个m个数的集合,求1到n中满足能被集合中一个数整除的数有几个
思路:根据容斥定理,满足条件的数为被集合中一个数整除的数的数量和-能被集合中任意两个数整除的数的数量+三个......
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;typedef long long ll;int a[20];int n,m;void solve(){ int res=0; for(int i=1;i<(1<<m);i++) { int num=0; for(int j=i;j!=0;j>>=1) num+=j&1; int lcm=1; for(int j=0;j<m;j++) { if(i>>j&1) { lcm=lcm/__gcd(lcm,a[j])*a[j]; if(lcm>n) break; } } if(num%2==0) res-=(n/lcm); else res+=(n/lcm); } printf("%d\n",res);}int main(){ while(~scanf("%d%d",&n,&m)) { n--; int flag=1; for(int i=0;i<m;i++) { scanf("%d",&a[i]); if(a[i]==0) { i--;m--; } } solve(); } return 0;}
阅读全文
1 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(容斥原理)
- 开新节点架设服务端
- ElasticSearch5.4.3 环境搭建 2017 (1-单节点模式/开发模式)
- centos学习:iptables学习
- (2.2.8.7) Android中BuildConfig类的那些事
- kettle基础文件讲解和开发实例
- HDU 1796 How many integers can you find(容斥原理)
- 可拖拽式层叠卡片效果
- Windows环境下使用SSH的开源图形化SFTP客户端:WinSCP
- WMI入门(三):我需要的类在哪里?
- C++ 11 可变模板参数详解
- mybatis结合 log4j单元测试打印出sql语句
- Android multidex在Android原生开发中的简单配置。
- 文章标题<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post
- N问GBDT(1-12答案)