Cod sursa(job #1444360)
Utilizator | Sandulescu Alexandru alexandrusandulescu | Data | 29 mai 2015 17:09:24 |
---|---|---|---|
Problema | Suma si numarul divizorilor | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.76 kb |
#include <fstream>
using namespace std;
int n, i, x, s, d, y, nr, p, v;
int main()
{
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
f >> n;
for (i = 1; i <= n; i++)
{
f >> x;
s = 1;
d = 2;
y = x;
nr = 1;
while (x != 1 && d * d <= y)
{
p = 0;
v = d;
while (x % d == 0)
{
p++;
v *= d;
x /= d;
}
nr = nr * (p+1);
s = s * (v-1)/(d-1);
d++;
}
if (x != 1)
{
nr *= 2;
s = s * (x * x - 1)/(x - 1);
}
g << nr << " " << s % 9973 << '\n';
}
return 0;
}