Cod sursa(job #1334664)

Utilizator Sanduleac_VladSanduleac Vllad Alexandru Sanduleac_Vlad Data 4 februarie 2015 15:59:25
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
using namespace std;

int N, X;
int fi[100001];

void ciur() {
    int i, j;
    for(i = 1; i <= 100000; i++)
        fi[i] = i;
    for(i = 4; i <= 100000; i += 2)
        fi[i] /= 2;
    fi[0] = fi[1] = 0;
    fi[2]--;
    for(i = 3; i <= 100000; i += 2)
        if(fi[i] == i) {
            fi[i]--;
            for(j = 2 * i; j <= 100000; j += i)
                fi[j] = (fi[j] / i) * (i - 1);
        }
}

int main() {
    int i, j;
    freopen("sum.in", "r", stdin);
    freopen("sum.out", "w", stdout);
    ciur();
    scanf("%d", &N);
    for(i = 1; i <= N; i++) {
        scanf("%d", &X);
        printf("%lld\n", (long long) 2 * X * fi[X]);
    }
    return 0;
}