Pagini recente » Cod sursa (job #1006074) | Cod sursa (job #966039) | Cod sursa (job #1489339) | Cod sursa (job #373725) | Cod sursa (job #3321345)
#include <fstream>
#include <vector>
#define int long long
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
bool ciur[1000010];
int i, j, t, n, sum, number_of, numbah, how_many;
vector<int> v;
const int NR = 1000000;
const int MOD = 9973;
int fastpow(int n, int x)
{
int p = 1;
while(x)
{
if (x%2)
p=(p*n)%MOD;
n=(n*n)%MOD;
x/=2;
}
return p;
}
int32_t main()
{
ciur[0] = ciur[1] = 1;
v.push_back(2);
for (j = 2*2; j <= NR; j += 2)
ciur[j] = 1;
for (i = 3; i <= NR; i += 2)
{
if (ciur[i] == 1)
continue;
for (j = i*2; j <= NR; j+=i)
ciur[j] = 1;
v.push_back(i);
}
in >> t;
while(t)
{
--t;
in >> n;
sum = 1;
number_of = 1;
for (auto ind : v)
{
if (n == 1)
break;
how_many = 0;
while(n%ind == 0)
{
n/=ind;
how_many++;
}
if (how_many == 0)
continue;
numbah = fastpow(ind, how_many+1);
sum = (sum*(((numbah-1+MOD)*fastpow(ind-1, MOD-2))%MOD))%MOD;
number_of = (number_of*(how_many+1))%MOD;
}
if (n != 1)
{
sum = (sum*((n*n-1)*fastpow(n-1, MOD-2))%MOD)%MOD;
number_of=(number_of*2)%MOD;
}
out << number_of << ' ' << sum << '\n';
}
return 0;
}