Cod sursa(job #3182820)

Utilizator not_anduAndu Scheusan not_andu Data 9 decembrie 2023 18:01:49
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
/**
 * Author: Andu Scheusan (not_andu)
 * Created: 09.12.2023 17:45:56
*/

#include <bits/stdc++.h>
#pragma GCC optimize("O3")

using namespace std;

#define INFILE "fractii.in"
#define OUTFILE "fractii.out"

typedef long long ll;

const int PHI_MAX = 1000002;

int phi[PHI_MAX];

void init_phi(int upLimit){

    for(int i = 1; i <= upLimit; ++i) phi[i] = i - 1;

    for(int i = 2; i <= upLimit; ++i){
        for(int j = 2 * i; j <= upLimit; j += i){
            phi[j] -= phi[i];
        }
    }

}

void solve(){

    int n; cin >> n;

    init_phi(n);

    ll ans = 0;

    for(int i = 1; i <= n; ++i) ans += phi[i];

    cout << 2 * ans + 1 << '\n';

}

int main(){
    
    ios_base::sync_with_stdio(false);

    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);

    cin.tie(nullptr);
    cout.tie(nullptr);

    solve();

    return 0;
}