Cod sursa(job #2852986)

Utilizator mihai03Mihai Grigore mihai03 Data 19 februarie 2022 19:06:38
Problema Fractii Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <iostream>
#define ull unsigned long long
using namespace std;

unsigned long long dp[2];

ull euler(int n)
{
    ull phi = 1;
    for (int d = 2; d * d <= n; d++)
        if (n % d == 0) {
            phi *= d - 1;
            n /= d;
            while (n % d == 0) {
                phi *= d;
                n /= d;
            }
        }
    if (n > 1)
        phi *= n - 1;
    return phi;
}

int main()
{
    ifstream f("fractii.in");
    int n;
    f >> n;
    dp[1] = 1;
    for (int i = 2; i <= n; ++i) {
        dp[i % 2] = dp[(i - 1) % 2] + 2 * euler(i);
    }
    ofstream g("fractii.out");
    g << dp[n % 2];
    return 0;
}