Cod sursa(job #3263908)

Utilizator dvviddManciu David dvvidd Data 17 decembrie 2024 00:51:44
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

int n;

vector<int> computeTotient(int n) {
    vector<int> phi(n + 1);
    for (int i = 1; i <= n; i++) phi[i] = i;

    for (int i = 2; i <= n; i++) {
        if (phi[i] == i) {  // `i` is prime
            for (int j = i; j <= n; j += i) {
                phi[j] = phi[j] * (i - 1) / i;
            }
        }
    }

    return phi;
}

int main() {
    fin >> n;

    vector<int> phi = computeTotient(n);

    // Count all irreducible fractions
    long long count = 0;
    for (int q = 1; q <= n; q++) {
        count += phi[q];  // Add the count of valid numerators for denominator `q`
    }

    fout << count << "\n";

    return 0;
}