Cod sursa(job #1637610)

Utilizator RaduToporanRadu Toporan RaduToporan Data 7 martie 2016 18:15:44
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long i,x,t,nr,e,sum,n;
int v[500000];
bool a[1000001];
void ciur()
{int i,j;
v[1]=2;
for(i=3;i<=1000;i=i+2)
    if(a[i]==0)
        for(j=i*i;j<=1000001;j=j+i)
            a[j]=1;
nr=1;
for(i=3;i<=1000001;i=i+2)
    if(a[i]==0)
        ++nr,v[nr]=i;
}

int main()
{f>>n;
ciur();
for(;n;--n)
{f>>x;
sum=nr=1;
for(i=1;v[i]*v[i]<=x;++i)
    if(x%v[i]==0)
    {e=1;
    t=v[i];
    while(x%v[i]==0)
    {t*=v[i];
    x/=v[i];
    ++e;
    }
    nr*=e;
    sum*=((t-1)/(v[i]-1))%MOD;
    }
if(x!=1)
{nr*=2;
sum*=(x*x-1)/(x-1)%MOD;
}
g<<nr<<' '<<sum%MOD<<'\n';
}
return 0;
}