Pagini recente » Cod sursa (job #1641767) | Cod sursa (job #2983770) | Cod sursa (job #908374) | Cod sursa (job #1913401) | Cod sursa (job #1496287)
# include <bits/stdc++.h>
# define x first
# define y second
using namespace std;
ifstream fi("ssnd.in");
ofstream fo("ssnd.out");
vector < int > primes;
bitset < 1000005 > p;
const int mod = 9973;
int pow(int a,int b,int mod)
{
int ans = 1;
while (b)
{
if (b&1) ans = (ans * a) % mod;
a = (a * a) % mod;
b /= 2;
}
return ans;
}
pair < int , int > ans(long long n)
{
pair < int , int > d = {1,1};
for (auto it : primes)
{
if (1ll * it * it > n) break;
int cnt = 1;
int c = 1;
while (!(n%it)) n /= it,++cnt,c = (c * it) % mod;
d.x *= cnt;
d.y = (d.y * ((((c * it - 1 + mod) % mod) * pow(it - 1,mod - 2,mod)) % mod)) % mod;
}
if (n != 1) d.x *= 2,d.y = (d.y * ((((n % mod) * (n * mod) + mod - 1) * pow(n-1,mod-2,mod)) % mod)) % mod;
return d;
}
int main(void)
{
int t;
for (int i = 2;i <= 1e6;++i) p[i] = 1;
for (int i = 4;i <= 1e6;i += 2) p[i] = 0;
for (int i = 3;i*i <= 1e6;++i)
if (p[i])
for (int j = i*i;j <= 1e6;j += i + i)
p[j] = 0;
for (int i = 2;i <= 1e6;++i)
if (p[i]) primes.push_back(i);
ios_base :: sync_with_stdio(0);
fi>>t;
long long n;
while (t --)
{
fi>>n;
pair < int , int > d = ans(n);
fo << d.x << ' ' << d.y << '\n';
}
return 0;
}