Cod sursa(job #2924301)

Utilizator mihnea.cazan15mihnea cazan mihnea.cazan15 Data 28 septembrie 2022 22:52:29
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<bits/stdc++.h>
#include <fstream>

using namespace std;
ifstream fin("fractii.in");
ofstream fout("fractii.out");
long long far[1000005],phi[1000005];
int main()
{
    long long  n;
    fin>>n;
    long long ans=0;
    vector<long long> primes;
    memset(far,-1,sizeof(far));
    for(int i=2;i<=n;i++)
    {
        if(far[i]==-1)
        {
           primes.push_back(i);
           far[i]=primes.size()-1;
           phi[i]=i-1;
        }
        for(int j=0;j<=far[i] && primes[j]*i<=n;j++)
            {
                far[primes[j]*i]=j;
                phi[primes[j]*i]=phi[i]*primes[j];
                if(j<far[i])
                   phi[primes[j]*i]-=phi[i];
            }
    }
    for(int i=2;i<=n;i++)
        ans+=phi[i];
    fout<<2*ans+1;
    return 0;
}