Cod sursa(job #2450884)

Utilizator AnimusFabian Animus Data 24 august 2019 19:20:45
Problema Fractii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <stdio.h>
#include <bitset>

using namespace std;

long long fractii[1000001];
int n;

int main(){
    ios::sync_with_stdio(false);
    freopen("fractii.in", "r", stdin);
    freopen("fractii.out", "w", stdout);
    int phi[1000000 + 1], prime[1000000/10], sz;
    bitset <1000000 + 1> mark;

    for (int i = 2; i <= 1000000; i++ ){
        if(!mark[i]){
            phi[i] = i-1;
            prime[sz++]= i;
        }
        for (int j=0; j<sz && prime[j]*i <= 1000000; j++ ){
            mark[prime[j]*i]=1;
            if(i%prime[j]==0){
                  phi[i*prime[j]] = phi[i]*prime[j];
                  break;
            }
            else phi[i*prime[j]] = phi[i]*(prime[j]-1 );
        }
    }
    cin >> n;
    fractii[0] = 1;
    fractii[1] = 2;
    for(int i = 2; i <= n; i++){
        fractii[i] = fractii[i-1] + phi[i];
    }
    cout << 2*fractii[n] - 3;
}