Cod sursa(job #2854781)

Utilizator alexandru.ciorneiAlexandru-Stefan Ciornei alexandru.ciornei Data 21 februarie 2022 19:09:08
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;

int cmmdc(int a, int b) {
    if(a < b)
        swap(a, b);
    int r = a % b;
    while (r != 0) {
        a = b;
        b = r;
        r = a % b;
    }
    return b;
}

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

    int N;
    fin >> N;

    int *phi = new int[N + 1];
    phi[1] = 0;

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

    unsigned long long int nrfrac = 0;
    for (int i = 1; i <= N; i++)
        nrfrac += phi[i];
    nrfrac *= 2;
    nrfrac++;
    fout << nrfrac;

    delete[] phi;
    return 0;
}