Cod sursa(job #2261026)
| Utilizator | Data | 15 octombrie 2018 20:54:45 | |
|---|---|---|---|
| Problema | Pairs | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <fstream>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
unsigned long long n,m,k,s;
bool f[1000001],p[1000001];
int main()
{ in>>n;
for(int i=1;i<=n;i++)
in>>m,f[m]=1;
for(int i=2;i<=1000000;i++)
if(!p[i])
for(int j=i*2;j<=1000000;j+=i)
p[i]=1;
for(int i=2;i<=1000000;i++)
{ if(!p[i])
continue;
k=0;
for(int j=i;j<=1000000;j+=i)
k+=f[j];
if(p[i]%2==1)
s+=k*(k-1)/2;
else
s-=k*(k-1)/2;
}
out<<n*(n-1)/2-s;
in.close();
out.close();
return 0;
}
