Cod sursa(job #2870976)

Utilizator RobertAcAcatrinei Robert-Marian RobertAc Data 12 martie 2022 19:15:28
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>
#define nmax 100005
#define nrmax 1000005
#define sqrtmax 1005
using namespace std;

ifstream in("pairs.in");
ofstream out("pairs.out");

bool ciur[sqrtmax];
vector<int> prime;
int f[nrmax];

void dociur()
{
    prime.push_back(2);
    for(int i=3;i<=sqrtmax;i+=2)
    {
        if(!ciur[i])
        {
            prime.push_back(i);
            for(int j=i*i;j<=sqrtmax;j+=i)ciur[j]=1;
        }
    }
}

int fact(int sum,int num)
{
    for(auto i:prime)
    {
        if(num%i==0)
        {
            sum-=f[i];
            f[i]++;
            while(num%i==0)
            {
                num/=i;
            }
        }
    }
    if(num!=1)
    {
        sum-=f[num];
        f[num]++;
    }
    return sum;
}

int main()
{
    dociur();
    int n;
    in>>n;
    uint64_t res=0;
    for(int i=0;i<n;i++)
    {
        int nr;
        in>>nr;
        res+=fact(i,nr);
    }
    out<<res;
}