Pagini recente » Cod sursa (job #2022219) | Cod sursa (job #2465865) | Cod sursa (job #1159431) | Cod sursa (job #2342731) | Cod sursa (job #1688197)
#include <iostream>
#include <fstream>
#include <cmath>
#define MOD 9973
#define MAX 1000004
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
long long t, n, k, nd, sd, nr; bool a[MAX];
void ciur()
{
for(long long i = 2; i <= MAX; i++)
{
if(a[i] == 0)
{
for(long long j = 2 ; j * i <= MAX; j++) a[j*i] = 1;
}
}
}
long long pow(long long x1, long long x2)
{
long long rs;
rs = 1;
k = x1;
while(x2 != 0)
{
if(x2 % 2 == 1) rs = (rs * k);
k = (k * k);
x2 /= 2;
}
return rs;
}
long long lol(long long x, long long y, long long r)
{
if(x % r != 0)
return y;
else
{
y++;
return lol(x / r, y, r);
}
}
int main()
{
a[1] = 1;
ciur();
in >> t;
//out << t << "\n";
for(long long i = 1; i <= t; i++)
{
in >> nr;
k = 0;
nd = 1;
sd = 1;
for(long long j = 2; j <= sqrt(nr); j++)
{
if((a[j] == 0) && (nr % j == 0))
{
k++;
nd = nd * (lol(nr, 0, j) + 1) % MOD;
sd = sd * ( (pow(j,lol(nr, 0, j) + 1) -1 ) / (j - 1) ) % MOD;
}
}
if(k == 0 && nr != 1)
{
nd++;
sd = sd + nr % MOD;
}
out << nd << " " << sd << "\n";
}
return 0;
}