Cod sursa(job #1580849)
| Utilizator | Data | 26 ianuarie 2016 10:45:54 | |
|---|---|---|---|
| Problema | Suma si numarul divizorilor | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.73 kb |
#include <fstream>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
int n,d,p,nr,sum,l,t;
int main()
{
f>>t;
for(int j=1; j<=t; j++)
{
f>>n;
d=2;
p=0;
nr=1;
sum=1;
l=1;
while(n>1&&d*d<=n)
{
p=0;
while(!(n%d))
{
n/=d;
p++;
}
nr=nr*(p+1);
l=1;
for(int i=1; i<=p+1; i++)
l*=d;
sum=sum*((l-1)/(d-1));
d++;
}
if(n>1)
{
nr*=2;
sum*=(n*n-1)/(n-1);
}
g<<nr<<' '<<sum<<'\n';
}
return 0;
}
