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