Cod sursa(job #2271059)

Utilizator sandupetrascoPetrasco Sandu sandupetrasco Data 27 octombrie 2018 22:49:39
Problema Fractii Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#define MOD 1000000
using namespace std;
typedef long long ll;
typedef pair< int , int > PII;

int n, rs;
vector < int > primes;

// void get(){
//     vector < bool > T(MOD + 1, 0);

//     for (int i = 2; i <= MOD; i++){
//         if (!T[i]){
//             primes.push_back(i);

//             for (int j = i + i; j <= MOD; j += i){
//                 T[j] = 1;
//             }
//         }
//     }
// }

int phi(int x){
    int rs = x;

    for (int i = 2; i * i <= x; i++){
        if (x % i == 0){
            rs -= rs / i;
            while (x % i == 0) x /= i;
        }
    }

    if (x > 1) rs -= rs / x;

    return rs;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    ifstream cin("fractii.in");
    ofstream cout("fractii.out");

	cin >> n;
    
    for (int i = 2; i <= n; ++i){
        rs += phi(i) - 1;
    }

    cout << 2 * (rs + n) - 1;

	return 0;
}