Pagini recente » Cod sursa (job #691364) | cnrv_x_1 | Cod sursa (job #2014973) | Cod sursa (job #1335946) | Cod sursa (job #213314)
Cod sursa(job #213314)
#include <stdio.h>
#include <vector>
using namespace std;
vector <bool> m;
void read()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf(" %d", &n);
m.resize(1000020);
for (i = 1; i <= n; ++ i)
{
scanf("%d", &t);
v[t] =1;
}
}
inline long long combinari(long long x)
{
return x*(x-1)/2;
}
void solve()
{
for (i = 2; i <= 1000000; ++i)
{
if (nr[i] == -1)
continue;
if (nr[i] == 0)
for (j = i; j <= 1000000; j+=i)
{
++nr[j];
if (m[j])
++v[i];
}
int k = i*i;
for (j = i; j <= 1000000; j+=i)
{
//++nr[
if(m[j])
++v[i];
}
for (j = i; j <= 1000000; j+=k)
nr[j] = -1;
if (v[i]%2 == 0)
sol-=combinari(v[i]);
else
sol+=combinari(v[i]);
}
}
void print()
{
printf("%lld\n", sol);
}
}
int main()
{
read();
solve();
print();
return 0;
}