Cod sursa(job #1882349)

Utilizator AlexandruLuchianov1Alex Luchianov AlexandruLuchianov1 Data 17 februarie 2017 09:46:04
Problema Sum Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <cstdio>

using namespace std;


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 ;
  freopen("sum.in","r",stdin);
  freopen("sum.out","w",stdout);
  scanf("%d",&n);
  for(int i = 0 ; i < n;i++){
    scanf("%d",&a);
    printf("%lld\n",a * indicator(a) * 2LL);
  }
  return 0;
}