Cod sursa(job #494663)
| Utilizator | Data | 22 octombrie 2010 15:53:09 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include<stdio.h>
long i,n,t,a,j,p,sigma,tau;
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%ld",&t);
for(j=1;j<=t;j++)
{
scanf("%ld",&n);
sigma=1;
tau=1;
for(i=2;i<=n;i++)
if(n%i == 0)
{
a=1;
p=0;
while(n%i == 0)
{
n /= i;
++p;
a *= i;
}
tau *= 1+p;
sigma = sigma * ((a*i-1) / (i-1))%9973;
}
if(n!=1)
{
tau *= 2;
sigma = sigma * (n+1) %9973;
}
printf("%ld %ld\n",tau,sigma);
}
return 0;
}