Pagini recente » Cod sursa (job #1233532) | Cod sursa (job #966140) | Cod sursa (job #2646413) | Cod sursa (job #2732971) | Cod sursa (job #996699)
Cod sursa(job #996699)
#include<fstream>
using namespace std;
long long n,d[25],sol;
int K,put[25];
inline long long Gcd(long long a,long long b)
{
long long r;
while(b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
inline void Back(int pas,int nr1,long long lcm)
{
if(lcm>n)
return;
if(pas==K)
{
if(nr1%2==1)
sol+=1LL*put[nr1-1]*(n/lcm);
else
sol-=1LL*put[nr1-1]*(n/lcm);
}
else
{
Back(pas+1,nr1,lcm);
Back(pas+1,nr1+1,(lcm*d[pas])/Gcd(lcm,d[pas]));
}
}
int main()
{
int i;
ifstream fin("light2.in");
fin>>n>>K;
for(i=0;i<K;i++)
fin>>d[i];
fin.close();
put[0]=1;
for(i=1;i<=K;i++)
put[i]=2*put[i-1];
Back(0,0,1LL);
ofstream fout("light2.out");
fout<<sol<<"\n";
fout.close();
return 0;
}