Pagini recente » Istoria paginii runda/oni_training/clasament | Cod sursa (job #1155107) | Cod sursa (job #2225750) | Cod sursa (job #1641575) | Cod sursa (job #459413)
Cod sursa(job #459413)
#include <cstdio>
#define ll long long
#define FIN "ssnd.in"
#define FOU "ssnd.out"
#define PW(i) ( 1 << (i) )
#define SQ(i) ( (ll) (i) * (i) )
#define MOD 9973
ll N;
int T;
inline int pwlg(int n, int p)
{
int a = n, sol = 1;
for (int i = 0; PW(i) <= p; ++i)
{
if ( (PW(i) & p) > 0)
sol = (sol * a) % MOD;
a = SQ(a) % MOD;
}
return sol;
}
void ssnd()
{
scanf("%lld", &N);
int NR = 1, SUM = 1;
ll AUX = N;
for (int i = 2; SQ(i) <= N; ++i)
if (N % i == 0)
{
int p, s;
for (p = 0, s = 1; AUX % i == 0; AUX /= i, s *= i, ++p ) ;
NR *= p + 1;
SUM *= ((ll) s * i - 1) % MOD, SUM %= MOD;
SUM *= pwlg (i - 1, MOD - 2), SUM %= MOD;
}
if (AUX > 1)
{
NR <<= 1;
SUM *= (SQ(AUX) - 1) % MOD, SUM %= MOD;
SUM *= pwlg (AUX - 1, MOD - 2), SUM %= MOD;
}
printf("%d %d\n", NR, SUM);
}
int main()
{
for (scanf("%d", &T); T ; --T)
ssnd () ;
}