Pagini recente » Cod sursa (job #371380) | Cod sursa (job #1242640) | Cod sursa (job #1851887) | Cod sursa (job #1971878) | Cod sursa (job #2149009)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int v[1000001], pr[1000001], nr;
const int MOD = 9973;
void ciur(long long n)
{
int i, j;
v[0] = 1;
v[1] = 1;
for(i = 4; i <= n; i += 2)
v[i] = 1;
for(i = 3; i * i <= n; i += 2)
{
if(v[i] == 0)
for(j = i * i; j <= n; j += i)
v[j] = 1;
}
pr[1] = 2;
nr = 1;
for(int i = 3; i <= n; i++)
if(v[i] == 0)
pr[++nr] = i;
}
int putere(int a, int p)
{
int x = 1;
while(p > 0)
if(p % 2 == 0)
{
a = (long long)a * a % MOD;
// a=1LL*a*a%MOD;
p /= 2;
}
else
{
x = (long long)x * a % MOD;
p--;
}
return x;
}
void sol(int n)
{
int nrd = 1, ind = 1, exp, sumd = 1;
while(ind <= nr && 1LL * pr[ind]*pr[ind] <= n)
{
exp = 0;
while(n % pr[ind] == 0)
{
exp++;
n /= pr[ind];
}
nrd = nrd * (exp + 1);
sumd = (sumd * ((putere(pr[ind], exp + 1) - 1) / (pr[ind] - 1))) % MOD;
ind++;
}
if(n > 1)
{
nrd *= 2;
sumd = (sumd * (putere(n, 2) / (n - 1))) % MOD;
}
g << nrd << ' ' << sumd << '\n';
}
int main()
{
int t;
long long n;
ciur(1000000);
f >> t;
for(int i = 1; i <= t; i++)
{
f >> n;
sol(n);
}
return 0;
}