Cod sursa(job #1687226)
Utilizator | Data | 12 aprilie 2016 18:46:17 | |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
long long nrt, a, nrdiv=1, sumdiv=1, div1, exp1;
int main()
{
fin >> nrt;
for (int i =1; i<= nrt; i++)
{
fin >> a;
div1 = 2;
sumdiv = 1;
nrdiv = 1;
while (a > 1)
{
exp1=0;
while (a% div1 == 0 && a > 1){a = a/div1; exp1++;}
nrdiv*=(exp1+1);
sumdiv*=((pow(div1, exp1+1)-1)/(div1-1));
if (div1 == 2)div1++;
else div1+=2;
}
fout << nrdiv << ' ' << sumdiv << '\n';
}
return 0;
}