Cod sursa(job #3238139)

Utilizator stefdascalescuStefan Dascalescu stefdascalescu Data 20 iulie 2024 23:57:49
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;
 
 
int main() {
    ifstream cin("fractii.in");
    ofstream cout("fractii.out");
    
    int n;
    cin >> n;
    
    vector<int> totient(n+1);
    for (int i = 1; i <= n; i++) {
        totient[i] = i;
    }
    
    for (int i = 2; i <= n; i++) {
        // daca numarul inca este prim, trecem prin multipli
        if (totient[i] == i) { 
            for (int j = i; j <= n; j += i) {
                totient[j] /= i;
                totient[j] *= (i-1);
            }
        }
    }
    
    long long ans = 0;
    for (int i = 1; i <= n; i++) {
        ans += 2 * totient[i];
    }
    
    // nu vrem sa numaram 1/1 de doua ori
    cout << ans - 1 << '\n'; 
    return 0;
}