Cod sursa(job #2780011)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 5 octombrie 2021 19:12:45
Problema Fractii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define MAX 1000010

int f[ MAX + 10 ];
long long rez;
int n;

void Precalcul() {
    for( int i = 1; i <= MAX; i++ )
        f[ i ] = i;
    for( int i = 2; i <= MAX; i++ )
        if( f[ i ] == i ) {
            --f[ i ];
            for( int j = 2; j * i <= MAX; j++ )
                f[ j * i ] = f[ j * i ] / i * ( i - 1 );
        }
}

int main()
{

    Precalcul();

    FILE *fin = fopen( "fractii.in", "r" );
    fscanf( fin, "%d", &n );
    fclose( fin );

    for( int i = 1; i <= n; i++ )
        rez += f[ i ];

    FILE * fout = fopen( "fractii.out", "w" );
    fprintf( fout, "%lld\n", ( rez << 1 ) - 1 );
    fclose( fout );
    return 0;
}