Pagini recente » Monitorul de evaluare | Cod sursa (job #1446691) | Cod sursa (job #61379) | Profil Undergamer | Cod sursa (job #114420)
Cod sursa(job #114420)
#include <stdio.h>
#include <string.h>
#define nm 512
#define mm 1024
int cmmdc(int a, int b)
{
if (a == 0)
return b;
return cmmdc(b % a, a);
}
int n, a[nm], last[mm], crt[mm];
int main()
{
freopen("indep.in", "r", stdin);
freopen("indep.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
crt[a[1]] = last[a[1]] = 1;
/*
for (int i = 1; i <= 1000; ++i)
printf("%d ", last[i]);
printf("\n");
*/
for (int i = 2; i <= n; ++i) {
for (int j = 1; j <= 1000; ++j) {
int aux = cmmdc(j, a[i]);
crt[aux] += last[j];
}
/*
for (int j = 1; j <= 1000; ++j)
printf("%d ", crt[j]);
printf("\n");
*/
memcpy(last, crt, sizeof(crt));
}
printf("%d\n", crt[1]);
return 0;
}