Cod sursa(job #3219113)

Utilizator MorariuTMorariu MorariuT Data 30 martie 2024 09:48:40
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <math.h>
#include <fstream>

using namespace std;

ifstream fin("fractii.in");
ofstream fout("fractii.out");

long long int c[1000010];

void phi()
{
    for(int i = 0;i < 1000010;i++) c[i] = i;

    for(int i = 2;i < 1000010;i++)
    {
        if(c[i] == i)
        {
            for(int j = 2;j * i < 1000010;j++)
            {
                c[i * j] = c[i * j] / i * (i - 1);
            }
        }
    }
}

int main()
{
    phi();

    
    int n; fin >> n;
    long long int ans = 0;

    for(int i = 1;i <= n;i++)
    {
        int nr = i;
        if(nr == 1) ans += 1;
        else if(c[nr] == nr) ans += 2 * c[nr] - 2;
        else ans += 2 * c[nr];
    }

    fout << ans;
    
}