Cod sursa(job #2197097)

Utilizator Victoras2006Nicola Victor Teodor Victoras2006 Data 21 aprilie 2018 10:08:02
Problema Sum Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <fstream>
#define VM 100000

using namespace std;

ifstream fin( "sum.in" );
ofstream fout( "sum.out" );

long long e[VM + 1];

inline void calc_Euler() {
  for ( int i = 2; i <= VM; i ++ )
    e[i] = i;
  for ( int i = 2; i <= VM; i ++ )
    if ( e[i] == i )
      for ( int j = i; j <= VM; j += i )
        e[j] = e[j] / i * ( i - 1 );
}

int main() {
  int n, nr;
  fin >> n;
  calc_Euler();
  for ( int i = 0; i < n; i ++ ) {
    fin >> nr;
    fout << e[nr] * nr * 2 << "\n";
    /// cmmdc( x, n ) = 1 => cmmdc( 2n - x, n ) = 1;
  }
  return 0;
}