Cod sursa(job #585352)
Utilizator | Data | 28 aprilie 2011 23:03:39 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.86 kb |
#include <stdio.h>
long long n,e,i,nr;
long long sum,p,d;
int t;
int main(void)
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%d",&t);
while (t--)
{
scanf("%lld",&n);
sum=1;
nr=1;
for (i=2;i*i<=n;i++)
{
if (n%i) continue;
d=1;
e=0;
p=1;
while (n%i==0)
{
n/=i;
e++;
p*=i;
p%=9973;
d+=p;
if (d>=9973)
d-=9973;
}
nr*=(e+1);
sum=sum*d;
sum%=9973;
}
if (n>1) {nr*=2; sum=(sum*(n+1))%9973;}
printf("%lld %lld\n",nr,sum);
}
return 0;
}