/*
UVA 10325
题目大体就是说
给你一个数n,再给你m个数
问你1~n之中有多少个数与这m个数都互质
输入之后直接用容斥原理就行了
顺便记录一下
if(i&(1<<j))与if(((i>>j)&1)==1)效果是一样的
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define INF 2147483647
#define N 50
#define PI acos(-1)
#define EPS 1e-8
using namespace std;
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
ll lcm(ll a,ll b)
{
return a/gcd(a,b)*b;
}
int main()
{
ll n,m;
while(cin>>n>>m)
{
ll a[20];
for(int i=1;i<=m;i++)
cin>>a[i];
ll sum=0;
for(int i=1;i<(1<<m);i++)
{
ll res=1,flag=0;
for(int j=1;j<=m;j++)
{
if((((i>>(j-1)))&1)==1)
{
res=lcm(res,a[j]);
if(res>n)
break;
flag++;
}
}
if(res>n)
continue;
if(flag%2==0)
sum=sum-n/res;
else
sum=sum+n/res;
}
cout<<n-sum<<endl;
}
return 0;
}
UVA 10325
题目大体就是说
给你一个数n,再给你m个数
问你1~n之中有多少个数与这m个数都互质
输入之后直接用容斥原理就行了
顺便记录一下
if(i&(1<<j))与if(((i>>j)&1)==1)效果是一样的
*/
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<stdio.h>
#include<math.h>
#define ll long long
#define INF 2147483647
#define N 50
#define PI acos(-1)
#define EPS 1e-8
using namespace std;
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
ll lcm(ll a,ll b)
{
return a/gcd(a,b)*b;
}
int main()
{
ll n,m;
while(cin>>n>>m)
{
ll a[20];
for(int i=1;i<=m;i++)
cin>>a[i];
ll sum=0;
for(int i=1;i<(1<<m);i++)
{
ll res=1,flag=0;
for(int j=1;j<=m;j++)
{
if((((i>>(j-1)))&1)==1)
{
res=lcm(res,a[j]);
if(res>n)
break;
flag++;
}
}
if(res>n)
continue;
if(flag%2==0)
sum=sum-n/res;
else
sum=sum+n/res;
}
cout<<n-sum<<endl;
}
return 0;
}