Cod sursa(job #670501)
| Utilizator | Data | 29 ianuarie 2012 12:58:07 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <cstdio>
int v[131131];
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
int t,n,i,nr;
long long S;
scanf("%d",&t);
while(t--){
long long put[500000]={1};
S=1;
nr=1;
i=2;
scanf("%d",&n);
//descompunem in factori primi
while(n!=1){
if(n%i==0){
++v[i];
n/=i;
put[i]*=i;
}
else
i++;
}
int d=i;
for(i=2;i<=d;i++)
if(v[i]){
nr=nr*(v[i]+1);
S=S*( ( put[i]*i -1 )/(i-1)) ;
}
printf("%d %ll6d",nr,S);
}
}
