<题目链接>

题目大意:

给你m个数,其中可能含有0,问有多少小于n的正数能整除这个m个数中的某一个。

解题分析:

容斥水题,直接对这m个数(除0以外)及其组合的倍数在[1,n)中的个数即可,因为可能会重复计算,所以在叠加的时候进行容斥处理,下面用的是位运算实现容斥。

 #include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long ll;
ll n,m,arr[];
ll gcd(ll a,ll b){
return b==?a:gcd(b,a%b);
}
ll lcm(ll a,ll b){
return a*b/gcd(a,b);
}
int main(){
while(cin>>n>>m){
int cnt=;
for(int i=;i<=m;i++){
scanf("%lld",&arr[cnt]);
if(arr[cnt])cnt++;
}
ll sum=;
for(int i=;i<(<<cnt);i++){
ll res=,tot=;
for(int j=;j<cnt;j++){
if(i & (<<j)){
res=lcm(res,arr[j]); //注意这里将不同的数组合时,是求它们的lcm,而不是直接相乘
tot++; //组合的数个数,用于后面判奇偶
}
}
if(tot & )sum+=(n-)/res; //题意不包含n
else sum-=(n-)/res;
}
printf("%lld\n",sum);
}
}

2019-02-09

最新文章

  1. apache 使用 .htaccess 导致500错误
  2. webapi输入验证过滤器ValidationActionFilter
  3. drupal记录(一)
  4. #utf-8与gbk转换 #bytes 和str 的转换
  5. jQuery.KinSlideshow焦点图轮换
  6. 新浪云sae 邮件服务 quicksend()
  7. wzplayer2 for windows ActiveX 试用地址
  8. ASP.Net IE10 _doPostBack 未定义错误【转】
  9. android gridview布局,实现长按某一个,所有项都显示删除的图标
  10. Python学习笔记1-搭建Python环境 和 Python Hello World!
  11. FastDFS 分布式文件系统的安装与使用
  12. 刚 安装 Oracle时,登录会出现的问题, ora-28000: the account is locked
  13. Optimal Marks SPOJ 839
  14. python使用requests发送text/xml报文数据
  15. windows:plsql配置oracle连接
  16. Linux Curl命令
  17. 创建.NET core的守护进程
  18. 二分查找算法(Python版)
  19. 【采集层】Kafka 与 Flume 如何选择(转)
  20. eclipse启动tomcat, http://localhost:8080无法访问的解决方案

热门文章

  1. Confluence 6 配置数字格式
  2. 洛谷P2014 选课
  3. mac 端口占用问题
  4. 使用gulp-babel转换Es6出现exports is not defined 问题
  5. LeetCode(121):买卖股票的最佳时机
  6. 【python】ftp连接,主被动,调试等级
  7. easyui合并多个单元格
  8. ajax---异步请求对象的属性和方法
  9. JMeter 中跨线程组 变量值传递的方法
  10. Duplicate 复制数据库 搭建Dataguard