1.计数
(count.cpp/c/pas)
时间限制:1s
内存限制:256MB
【问题描述】
给出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]
【输出】
输出文件名为count.out。
输出一行,包含1个整数,表示答案
【输入输出样例】
|
count.in |
count.out |
|
10 2 2 3 |
3 |
【数据说明】
对于60%的数据,1<=n<=106
对于另外20%的数据,m=2
对于100%的数据,1<=n<=109,0<=m<=20,1<=a[i]<=109
题解:
#include<iostream> #include<cstdio> using namespace std; int cnt,n,m,x,vis[5000000]; int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d",&x); for(int j=1;j*x<=n;j++){ if(!vis[j*x]){ vis[j*x]=true; cnt++; } } } printf("%d\n",n-cnt); return 0; }