Pagini recente » Cod sursa (job #712138) | Cod sursa (job #727736) | Cod sursa (job #1133130) | Cod sursa (job #172721) | Cod sursa (job #1688099)
#include <iostream>
#include <fstream>
#include <cmath>
#define MOD 9973
#define MAX 2000006
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int t, n, k, nd, sd, nr; bool a[MAX];
void ciur()
{
for(int i = 2; i <= MAX; i++)
{
if(a[i] == 0)
{
for(int j = 2 ; j * i <= n; j++) a[j*i] = 1;
}
}
}
int pow(int x1, int x2)
{
long long rs;
rs = 1;
k = x1;
while(x2 != 0)
{
if(x2 % 2 == 1) rs = (rs * k) % MOD;
k = (k * k) % MOD;
x2 /= 2;
}
return rs;
}
int lol(int x, int y, int 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(int i = 1; i <= t; i++)
{
in >> nr;
nd = 1;
sd = 1;
for(int j = 1; j <= sqrt(nr); j++)
{
if(a[j] == 1 && nr % j == 0)
{
nd = nr * (lol(nr, 0, j) + 1);
sd = sd * ( (pow(j,lol(nr, 0, j))-1) / (j - 1) );
}
}
out << nd << " " << sd << "\n";
}
//out << (lol(13, 0, 13) + 1);
return 0;
}