Cod sursa(job #650773)
Utilizator | Data | 18 decembrie 2011 22:15:53 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 10 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include<stdio.h>
#include<math.h>
int main()
{
int i,t,nr;
long n,s,d2;
FILE *f, *g;
f=fopen("ssnd.in","r");
g=fopen("ssnd.out","w");
fscanf(f,"%d",&t);
for(i=1;i<=t;i++)
{
fscanf(f,"%ld",&n);
long long d=2,p;
s=1;nr=1;
while(n>1)
{
p=0;d2=1;
while(n%d==0)
{
p++;
d2=d2*d;
n=n/d;
}
if(p!=0)
{
nr=nr*(p+1);
s=s*((d2*d-1)/(d-1));
}
d++;
}
fprintf(g,"%d %ld\n",nr,s);
}
fclose(f);
fclose(g);
return 0;
}