Cod sursa(job #599949)

Utilizator laurionLaurentiu Ion laurion Data 30 iunie 2011 03:11:13
Problema Sum Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<cstdio>
int main()
{
    FILE *fin = fopen("sum.in","r");
    FILE *fout= fopen("sum.out","w");
    int n,v[100000],phi[100000];
    int max=0;

    fscanf(fin,"%d",&n);
    for(int i=0;i<n;++i)
    {
        fscanf(fin,"%d",&v[i]);
        if(max<v[i])
            max=v[i];
    }
    for(int i=1;i<=max;++i)
        phi[i]=i;
    for(int i=2;i<=max;++i)
    {
        if(phi[i]==i)
        {
            for(int j=i;j<=max;j+=i)
                phi[j]/=i,phi[j]*=(i-1);
        }
    }
    for(int i=0;i<n;++i)
        fprintf(fout,"%lld\n",(long long)2*(long long)phi[v[i]]*v[i]);

    return 0;
}