Pagini recente » Cod sursa (job #411970) | Cod sursa (job #2064221) | Cod sursa (job #1586777) | Cod sursa (job #40369) | Cod sursa (job #2446703)
#include <iostream>
#include <fstream>
#include <queue>
#include <string>
using namespace std;
long long int v[100005],n,maxim=0,nr[100005],numar,t;
ifstream f("pairs.in");
ofstream g("pairs.out");
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>t;
if(t>maxim) maxim=t;
v[t]=1;
}
numar=(n-1)*n/2;
for(int i=2;i<=maxim;i++)
nr[i]=-1;
for(int i=2;i<=maxim;i++)
{
if(nr[i]==-1)
{
if(v[i]==1) nr[i]=1;
else nr[i]=0;
for(int j=i;j<=maxim;j+=i)
if(v[j]==1) nr[j]=nr[j-i]+1;
else nr[j]=nr[j-i];
int r=maxim-maxim%i;
if(nr[r]>=2) numar-=((nr[r]-1)*nr[r])/2;
}
}
g<<numar;
}