Pagini recente » Cod sursa (job #96858) | Cod sursa (job #1739238) | Cod sursa (job #1993672) | Cod sursa (job #1274258) | Cod sursa (job #121208)
Cod sursa(job #121208)
#include <stdio.h>
const int N_MAX = 100010;
int v[N_MAX], is[N_MAX * 10], cate[N_MAX * 10];
int prim[] = {2, 3, 5, 7, 11, 13, 17};
int main()
{
freopen("pairs.in", "r", stdin);
#ifndef _SCREEN_
freopen("pairs.out", "w", stdout);
#endif
int N, i, MAX = 0, j;
scanf("%d\n", &N);
for (i = 1; i <= N; i ++) {
scanf("%d ", &v[i]);
is[v[i]] = 1;
if (v[i] > MAX) MAX = v[i];
}
for (i = 2; i <= MAX; i ++) {
for (j = i; j <= MAX; j += i) {
cate[i] += is[j];
}
}
int comb, rez = 0, nrb, P;
MAX = 1 << 7;
for (comb = 1; comb < MAX; comb ++) {
P = 1, nrb = 0;
for (i = 0; i < 7; i ++) {
if (comb & (1 << i)) P *= prim[i], nrb ++;
}
if (nrb % 2 == 1) rez += (cate[P] * (cate[P] - 1) / 2);
else rez -= (cate[P] * (cate[P] - 1) / 2);
}
printf("%d\n", (N * (N - 1) / 2) - rez);
return 0;
}