Cod sursa(job #1701864)
| Utilizator | Data | 14 mai 2016 12:19:29 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.75 kb |
#include<cstdio>
int main()
{
long long n,t,i,d,p,nrdiv,sdiv,put,cn;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
scanf("%lld",&t);
for(i=1;i<=t;i++)
{
scanf("%lld",&n);
cn=n;
d=2;
nrdiv=sdiv=1;
while(d<=n)
{
p=0;
put=1;
while(n%d==0)
{
n/=d;
p++;
put=put*d;
}
put*=d;
if(p!=0)
{
nrdiv=nrdiv*(p+1);
sdiv=sdiv*((put-1)/(d-1));
}
d++;
}
if(n!=1)
{
nrdiv=nrdiv*(n-1);
}
if(nrdiv==2)
sdiv=cn+1;
printf("%lld %lld\n",nrdiv,sdiv);
}
return 0;
}
