容斥原理!!

这题首先要去掉=0和>=n的值,然后再使用容斥原理解决

我用的是数组做的……

  1. #include<iostream>
  2. #include<stdio.h>
  3. #include<algorithm>
  4. #include<iomanip>
  5. #include<cmath>
  6. #include<string>
  7. #include<vector>
  8. #define ll __int64
  9. using namespace std;
  10. int an[],n,m,num,a[];
  11. ll gcd(int a,int b)
  12. {
  13. int t;
  14. if(a<b) swap(a,b);
  15. while(b)
  16. {
  17. t=a;
  18. a=b;
  19. b=t%b;
  20. }
  21. return a;
  22. }
  23. ll lcm(int a,int b)
  24. {
  25. return a/gcd(a,b)*b;
  26. }
  27. ll cal()
  28. {
  29. ll quene[],sum=;
  30. int t=,k,i,j;
  31. quene[t++]=-;
  32. for(i=;i<num;i++)
  33. {
  34. k=t;
  35. for(j=;j<k;j++)
  36. {
  37. if(quene[j]<)
  38. quene[t++]=lcm(-quene[j],an[i]);
  39. else quene[t++]=(-)*lcm(quene[j],an[i]);
  40. }
  41. }
  42. for(i=;i<t;i++)
  43. sum+=(n-)/quene[i];
  44. return sum;
  45. }
  46. int main()
  47. {
  48. int i,j,t,k;
  49. while(cin>>n>>m)
  50. {
  51. num=;k=;
  52. for(i=;i<m;i++)
  53. {
  54. cin>>t;
  55. if(t>&&t<n) an[num++]=t;
  56. }
  57. printf("%I64d\n",cal());
  58. }
  59. return ;
  60. }

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

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

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

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

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

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

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

  4. 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 ...

  5. hdu 1796 How many integers can you find 容斥定理

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

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

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

  7. HDU 1796 How many integers can you find(容斥原理+二进制/DFS)

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

  8. hdu 1796 How many integers can you find 容斥第一题

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

  9. HDU 1796 How many integers can you find 【容斥】

    <题目链接> 题目大意: 给你m个数,其中可能含有0,问有多少小于n的正数能整除这个m个数中的某一个. 解题分析: 容斥水题,直接对这m个数(除0以外)及其组合的倍数在[1,n)中的个数即 ...

随机推荐

  1. ListBox复选框拓展

    Toolkit的LongListMutiSelector的复选框功能,想必许多人都需要吧!然而系统本身控件ListBox虽然也有多选功能,可是外观上却缺乏复选框,选择效果只是颜色变化.于是在上一个项目 ...

  2. .Net 将一个DataTable分解成多个DataTable

    这两天遇到一个问题,我们所接触 的一个系统在导出数据到Excel的时候,产生了内存溢出的错误.原因在于数据过大,它导出是将所有数据存放在一个DataSet的一个表中,再将这个数 据集放入session ...

  3. Gulp vs Grunt 前端构建工具对比

    Gulp vs Grunt 前端工程的构建工具对比 1. Grunt -> Gulp 早些年提到构建工具,难免会让人联想到历史比较悠久的Make,Ant,以及后来为了更方便的构建结构类似的Jav ...

  4. JVM学习---JAVA内存

    一.JAVA运行时数据区域:JAVA中的运行时内存区域有的随着虚拟机进程的启动而存在,有的区域则是依赖用户线程的启动和结束而建立和销毁的.包括以下的几个区域. 图. JAVA虚拟机运行时数据区 1.程 ...

  5. JavaScript 垃圾回收机制分析

    同C# .Java一样可以手工调用垃圾回收程序,但是由于其消耗大量资源,而且手工调用的不会比浏览器判断的准确,所以不推荐手工调用垃圾回收.   最近精力主要用在了Web 开发上,读了一下<Jav ...

  6. linux下文件的复制、移动与删除

    linux下文件的复制.移动与删除命令为:cp,mv,rm 一.文件复制命令cp     命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)      ...

  7. CSS练习

    看到一个CSS参考手册:http://css.doyoe.com/ 感谢感谢!

  8. Linux 使用退格键时出现^H解决方法

    当我们再和脚本交互的时候,在终端上输错了内容,使用退格键,屏幕上会出现乱码,比如 ^H.^H不是H键的意思,是backspace. 主要是当你的终端backspace有问题的时候才需要设置. 解决方法 ...

  9. mac eclipse 安装maven,svn插件

    Eclipse中m2eclipse插件的安装 Eclipse默认不支持Maven.需要给它添加m2eclipse插件,地址是:http://download.eclipse.org/technolog ...

  10. ThinkPHP中initialize和construct调用父类的区别

    http://blog.topok.net/archives/142 需要加parent::_initialize();