T13432 1.计数
2024-09-29 01:17:08
题目描述
给出m个数a[1],a[2],…,a[m]
求1~n中有多少数不是a[1],a[2],…,a[m]的倍数。
输入输出格式
输入格式:
输入文件名为count.in。
第一行,包含两个整数:n,m
第二行,包含m个数,表示a[1],a[2],…,a[m]
输出格式:
输入输出样例
输入样例#1:
count.in count.out
10 2
2 3 3
输出样例#1:
输出一行,包含1个整数,表示答案
说明
对于60%的数据,1<=n<=106
对于另外20%的数据,m=2
对于100%的数据,1<=n<=109,0<=m<=20,1<=a[i]<=109
补几发题解
容斥,奇数个数的|lcm|减去,偶数个的加上
#include<cstdio>
using namespace std;
#define LL long long
int a[];
int n,m;
int gcd(int x,int y) {
if(y==)return x;
else return gcd(y,x%y);
}
LL ans=;
void dfs(int num,int step,LL lcm) {
if(lcm>n)return ;
if(num==m+){
if(step%==)ans-=n/lcm;//奇数个时加上
else if(step)ans+=n/lcm;//偶数个时减去
return ;
}
dfs(num+,step,lcm);
LL tmp=lcm*a[num]/gcd(lcm,a[num]);//选择该数
dfs(num+,step+,tmp);
}
int main () {
scanf("%d%d",&n,&m);
ans=n;
for(int i=;i<=m;++i ) {
scanf("%d",a+i);
}
dfs(,,);
printf("%lld\n",ans);
return ;
}
最新文章
- spring boot(五):spring data jpa的使用
- cf Round 607
- AC自动机
- ios线程和GCD
- XListView理念
- MySQL 安装 启动命令总结
- jQuery与DOM相互转换
- C# winform 渐变效果
- Unity3D 之2D动画机
- Python文件之----CSV
- Mysql数据库中的EXISTS和NOT EXISTS
- 建造者模式->;代码示例
- uva 699
- Dom+2016/4/20
- javascript DOM 笔记
- 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
- 线程 学习教程(一): Java中终止(销毁)线程的方法
- Java生成静态HTML文件
- 搜藏一个php文件上传类
- How to Conduct High-Impact Research and Produce High-Quality Papers