Pagini recente » Cod sursa (job #1007888) | Cod sursa (job #1886838) | Cod sursa (job #622047) | Cod sursa (job #778057) | Cod sursa (job #543702)
Cod sursa(job #543702)
#include <stdio.h>
using namespace std;
#define maxn 33
int i, j, k;
long long n, ras;
int v[maxn];
long long cmmdc(long long a, long long b)
{
long long r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
void back(int poz, long long cmmmc, int mk)
{
if(poz==k+1)
{
if(mk==0)
return;
if(mk%2)
ras+=n/cmmmc*(1<<(mk-1));
else
ras-=n/cmmmc*(1<<(mk-1));
return;
}
back(poz+1, cmmmc, mk);
long long x=cmmdc(v[poz], cmmmc);
if(cmmmc/x*v[poz]>n)
return;
back(poz+1, cmmmc/x*v[poz], mk+1);
}
int main()
{
freopen("light2.in", "r", stdin);
freopen("light2.out", "w", stdout);
scanf("%lld%d", &n, &k);
for(int i=1; i<=n; ++i)
scanf("%d", &v[i]);
back(1, 1, 0);
printf("%lld\n", ras);
return 0;
}