Cod sursa(job #1334583)

Utilizator raddudjPogonariu Radu raddudj Data 4 februarie 2015 15:08:23
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <cmath>
#include <vector>

using namespace std;

long long ce[1000000];

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

void ciursum(int n) {
    ciur(n);
    for(int i=1; i<=n; i++)
        ce[i]=(ce[i]*i)/2;
}

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