Cod sursa(job #1865199)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 1 februarie 2017 15:45:42
Problema Sum Scor 15
Compilator c Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int f[100001];
int getINT()
{
    int nr=0;
    char c;
    c=getchar();
    while(!isdigit(c))
        c=getchar();
    while(isdigit(c))
    {
        nr=nr*10+c-'0';
        c=getchar();
    }
    return nr;
}
int main()
{
    int t,i,x,e,xc,div;
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    t=getINT();
    for(i=1; i<=t; i++)
    {
        x=getINT();
        if(f[x]==0){
            div=2;
            e=1;
            xc=x;
            while(div*div<=x)
            {
                if(x%div==0){
                    while(x%div==0)
                        e*=div,x/=div;
                    e/=div;
                    e*=(div-1);
                }
                div++;
            }
            if(x>1)
                e*=(x-1);
            f[x]=e;
        }
        printf("%lld\n",(long long)2*xc*f[x]);
    }

    return 0;
}