Cod sursa(job #211063)
Utilizator | Data | 30 septembrie 2008 16:13:07 | |
---|---|---|---|
Problema | Pairs | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <stdio.h>
int n, v[1000005], rez, max;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
int i, j, k, x;
scanf("%d",&n);
for (i = 1; i <= n; i++)
{
scanf("%d", &x);
v[x] = 1;
if (x > max) max = x;
}
rez = (n * (n - 1)) / 2;
for (i = 2; i <= max; i++)
{
if (!v[i] != -1)
{
k = 1;
for (j = 2; j * i <= max; j++)
{
if (v[i * j] == 1)k++;
v[i * j] = -1;
}
k *= (k - 1);
k /= 2;
rez -= k;
}
}
printf("%d\n",rez);
return 0;
}