Cod sursa(job #2782367)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 12 octombrie 2021 11:50:29
Problema Sum Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 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()
{
    int x;
    Precalcul();
 
    FILE *fin = fopen( "sum.in", "r" );
    FILE * fout = fopen( "sum.out", "w" );
    fscanf( fin, "%d", &n );
    
    for( int i = 0; i < n; i++ ) {
        fscanf( fin, "%d", &x );
        fprintf( fout, "%lld\n", 2LL * x * f[ x ] );
    }

    fclose( fin );
    fclose( fout );
    return 0;
}