题意:找出小于n是m个数每个数的倍数的数的个数。

思路:用二进制表示是那几个数的倍数。 二进制进行容斥,去掉小于0的数。

 #include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; __int64 n,m,g;
__int64 a[],b[]; __int64 gcd(__int64 a,__int64 b)
{
return b==?a:gcd(b,a%b);
} int main()
{
while(scanf("%I64d%I64d",&n,&m)!=EOF)
{
memset(a,,sizeof(a));
__int64 cnt=;
for(int i=; i<m; i++)
{
__int64 x;
scanf("%I64d",&x);
if(x)
a[cnt++]=x;
}
__int64 ans=;
for(int i=; i<(<<cnt); i++)
{
__int64 xx=;
__int64 x=;
memset(b,,sizeof(b));
for(int j=; j<cnt; j++)
{
if(i&(<<j))
{
b[xx]=a[j];
xx++;
x*=a[j];
}
}
if(xx>)
{
g=(b[]*b[])/gcd(b[],b[]);
for(int k=; k<xx; k++)
{
g=(g*b[k])/gcd(g,b[k]);
}
x=g;
}
if(xx%!=)
{
ans+=((n-)/x);
}
else
{
ans-=((n-)/x);
}
}
printf("%I64d\n",ans);
}
return ;
}

hdu How many integers can you find的更多相关文章

  1. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

  2. HDU How many integers can you find 容斥

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. HDU 1796How many integers can you find(简单容斥定理)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  4. HDU 1796 Howmany integers can you find (容斥原理)

    How many integers can you find Time Limit: 12000/5000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  5. HDU 1796 How many integers can you find(容斥原理)

    题目传送:http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=20918&pid=1002 Problem Description    ...

  6. HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举)

    HDU.1796 How many integers can you find ( 组合数学 容斥原理 二进制枚举) 题意分析 求在[1,n-1]中,m个整数的倍数共有多少个 与 UVA.10325 ...

  7. HDU 1796 How many integers can you find 容斥入门

    How many integers can you find Problem Description   Now you get a number N, and a M-integers set, y ...

  8. HDU 1796 How many integers can you find (状态压缩 + 容斥原理)

    题目链接 题意 : 给你N,然后再给M个数,让你找小于N的并且能够整除M里的任意一个数的数有多少,0不算. 思路 :用了容斥原理 : ans = sum{ 整除一个的数 } - sum{ 整除两个的数 ...

  9. A Simple Problem with Integers 多树状数组分割,区间修改,单点求职。 hdu 4267

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. kafka Disks and Filesystem(磁盘和文件系统)

    转载请注明来源地址:http://www.cnblogs.com/dongxiao-yang/p/5206631.html We recommend using multiple drives to ...

  2. oracle存储过程含参数的插入数据

    create or replace procedure proczipcodebyzipinsert(   i_zipcode  in  zipcode.zip%type,   i_city in z ...

  3. 系统自带.net版本

    首先我们可以参照下面的图来得到各Windows系统包括server版的自带.NET Framework的信息,下图只列出了.NET Framework 2.0及其之后的版本. Which Versio ...

  4. lvchange的available參数

    available參数在man info help中均无此參数,事实上參数为:activate 写此此.值得用的人注意. available 參数实为:  -a, --activate [a|e|l] ...

  5. pat 1062. Talent and Virtue (25)

    难得的一次ac 题目意思直接,方法就是对virtue talent得分进行判断其归属类型,用0 1 2 3 4 表示 不合格 sage noblemen foolmen foolmen 再对序列进行排 ...

  6. asp.net基础概念总结

    1  什么是asp.net?asp.net是一种编程语言吗? asp.net是Microsoft公司推出的新一代建立动态web应用程序的开发平台,是一种建立动态web应用程序的新技术. 不是,asp. ...

  7. Android onConfigurationChanged(Configuration cfg) 无法触发问题

     1.android:configChanges="orientation|keyboardHidden"的使用  当在activity加上android:configChange ...

  8. ASP.NET性能优化小结

    一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...

  9. UIScrollView设置了contentSize后还是没办法滚动?

    1.最常见的原因是 contentSize 这个属性,比uiscrollview的frame要小, 无需滚动, 自然就滚动不了. scrollenabled 这个属性,标识着是否允许滚动,要言设成ye ...

  10. 03C#基础(2)

    1.比较运算符 ==等于;  !=不等于;  >大于;  >=大于或者等于;  <小于;  <=小于或者等于; 比较运算符(又称关系运算符)用来进行值得真假性判断,结果是boo ...