Pagini recente » Cod sursa (job #2550589) | Cod sursa (job #1117660) | Cod sursa (job #2108156) | Cod sursa (job #1433829) | Cod sursa (job #2738351)
#include <iostream>
#include <fstream>
#include <bitset>
#include <vector>
#include <cmath>
#define MOD 9973
#define f first
#define s second
#define ll long long
#define DIM 1000000
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
bitset <DIM+10> ciur;
vector <ll> prime;
void precalc()
{ for(int i=2; i<=DIM; i++)
if(!ciur[i])
{ prime.push_back(i);
for(int j=2*i; j<=DIM; j+=i)
ciur[j] = 1;
}
}
ll lgput(ll a, ll n)
{ if(!n) return 1;
if(n % 2 == 0) return lgput(a*a % MOD, n/2);
return a * lgput(a*a % MOD, n/2) % MOD;
}
int main()
{
precalc();
fin >> t;
while(t--)
{ ll n, ans1 = 1, ans2 = 1, val1 = 1, val2 = 1;
fin >> n;
for(int i=0; i<prime.size(); i++)
{ if(prime[i] * prime[i] > n) break;
if(n % prime[i] == 0)
{ ll val = prime[i], cnt = 0;
while(n % prime[i] == 0)
{ cnt++;
n /= prime[i];
}
ans1 = ans1 * (cnt + 1) % MOD;
val1 = (lgput(val, cnt + 1) - 1 + MOD) % MOD;
val2 = lgput(val - 1, MOD - 2);
ans2 = ans2 * val1 * val2 % MOD;
}
}
if(n > 1)
{ ans1 = ans1 * 2 % MOD;
val1 = (lgput(n, 2) - 1 + MOD) % MOD;
val2 = lgput(n - 1, MOD - 2);
ans2 = ans2 * val1 * val2 % MOD;
}
fout << ans1 << ' ' << ans2 << '\n';
}
return 0;
}