Cod sursa(job #2985151)

Utilizator Zed1YasuoAlex Birsan Zed1Yasuo Data 25 februarie 2023 19:16:35
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,x,a[1000005];
long long ans;
int main()
{
    f>>n;
  //  ans=n*(n-1)/2;
    for(int i=1;i<=n;i++)
    {
        f>>x;
        vector<int>fct;
        if(x%2==0)
            fct.push_back(2);
        while(x%2==0)
            x/=2;
        for(int d=3;d*d<=x;d+=2)
        {
            if(x%d==0)
                fct.push_back(d);
            while(x%d==0)
                x/=d;
        }
        if(x!=1)
            fct.push_back(x);
        int all=(1<<fct.size()),rez=0;
        for(int i=1;i<all;i++)
        {
            int bits=0;
            int r=1;
            for(int j=0;j<fct.size();j++)
                if((1<<j)& i )
                {
                    bits++;
                    r*=fct[j];
                }
            if(bits%2)
                rez-=a[r];
            else
                rez+=a[r];
            a[r]++;
        }
        ans+=(i-1+rez);
    }
    g<<ans;
    return 0;
}