Pagini recente » Cod sursa (job #1181427) | Cod sursa (job #1655924) | Cod sursa (job #877635) | Cod sursa (job #1711871) | Cod sursa (job #1289153)
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin ("pairs.in");
ofstream fout ("pairs.out");
#define N 1000000
unsigned long long sol,nr;
bitset <N> n_ok,p;
int f[N], n, M,x,viz[N];
int main()
{
fin>>n;
for (int i = 0; i < n; ++i)
{
fin>>x;
viz[x] = 1;
M = max(M, x);
}
for (int i=2; i<=M; ++i)
if (!p[i])
for (int j=1; j<=M/i;++j)
{
f[i*j]++;
p[i*j]=1;
if (j%i == 0)
n_ok[i*j] = 1;
}
for (int i=2;i<=M;++i)
if (!n_ok[i])
{
nr=0;
for(int j=1; j<=M/i; ++j)
if (viz[i*j])
nr++;
if (f[i]%2)
sol+=nr*(nr-1)/2;
else
sol-=nr*(nr-1)/2;
}
fout <<n * (n - 1) / 2 - sol;
}