Cod sursa(job #1882343)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 17 februarie 2017 09:42:13
Problema Sum Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in ("sum.in");
ofstream out ("sum.out");
long long  indicator(int n){
  long long s = 1;
  if((n % 2 ) == 0){
    n /= 2;
    while( (n % 2 ) == 0){
      s *= 2;
      n /= 2;
    }
    s *= 1;
  }

  for(int i = 3 ; i * i <= n ;i+= 2){
    if((n % i ) == 0){
      n /= i;
      while( (n % i ) == 0){
        s *= i;
        n /= i;
      }
      s *= (i - 1);
    }
  }
  if(1 < n){
    s *= (n - 1);
  }
  return s;
}
int main()
{
  int n ;
  int a ;
  in>>n;
  for(int i = 0 ; i < n;i++){
    in>>a;
    if(a == 2)
      out<<2<<'\n';
    else
      out<<a * indicator(a) * 2LL<<'\n';
  }
  return 0;
}