Cod sursa(job #1799235)

Utilizator Bodo171Bogdan Pop Bodo171 Data 5 noiembrie 2016 22:54:16
Problema Sum Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
const int nmax=100000;
int n,i,j,nrdiv[nmax+5],x;
long long sum[nmax+5],t,q,ind;
int main()
{
    freopen("sum.in","r",stdin);
    freopen("sum.out","w",stdout);
    scanf("%d",&n);
    for(i=2;i<=nmax;i++)
    {
      sum[i]+=(1LL)*i*(2*i+1);
      if(nrdiv[i]!=-1)
        for(j=i;j<=nmax;j+=i)
        {
            if(nrdiv[i]<2)
            {
            if(nrdiv[j]!=-1)nrdiv[j]++;
            if((j/i)%i==0) nrdiv[j]=-1;
            }
            t=(2*j)/i;
            q=(1LL)*i*t*(t+1)/2;
            if(nrdiv[i]%2==0) sum[j]+=q;
            else sum[j]-=q;
        }
    }
    sum[1]=3;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        printf("%lld\n",sum[x]);
    }
    return 0;
}