Pagini recente » Cod sursa (job #639755) | Cod sursa (job #2972113) | Cod sursa (job #1036855) | Cod sursa (job #1084811) | Cod sursa (job #1011947)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,v[100005],nr[100005],pos[1000005],pass[1000005],vmax=0;
void Ciur()
{ int i,j,nums;
for(i=2;i<=vmax;i++)
{ nums=0;
if (pos[i]) nums++;
for(j=i+i;j<=vmax;j+=i)
{if (pos[j])
{nr[pos[j]]-=nums; nr[pos[j]]+=pass[i];
pass[j]+=nums;
nums++;
}
}
}
}
int main()
{ int i;
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i];
vmax=max(vmax,v[i]);
}
//cout<<vmax;
sort(v+1,v+n+1);
for(i=1;i<=n;i++)
{
pos[v[i]]=i;
nr[i]=i-1;
}
Ciur();
long long sol=0;
for(i=1;i<=n;i++)
{sol+=max(nr[i],0);
cout<<nr[i]<<"\n";
}
g<<sol;
return 0;
}