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