Pagini recente » Cod sursa (job #1798948) | Cod sursa (job #1643340)
#include <fstream>
#include <bitset>
#define InFile "ssnd.in"
#define OutFile "ssnd.out"
#define MAX 1000001
#define MOD 9973
using namespace std;
ifstream fin (InFile);
ofstream fout (OutFile);
unsigned long int N;
int T, K, P[MAX];
bitset <MAX> seen;
void sieve ()
{
unsigned int i, j;
for (i=2; i<MAX; i++)
{
if (seen[i] == 0)
{
P[++K] = i;
for (j=i+i; j<MAX; j+=i)
seen[j] = 1;
}
}
}
inline int pow (int x, int p)
{
int rez = 1;
x %= MOD;
for (; p; p>>=1)
{
if (p & 1)
{
rez *= x;
rez %= MOD;
}
x *= x;
x %= MOD;
}
return rez;
}
void solve ()
{
int i;
fin >> N;
int nd=1, sd=1;
for (i=1; i<=K && 1LL*P[i]*P[i]<=N; i++)
{
if (N % P[i])
continue;
int p=0;
while (N%P[i] == 0)
{
N /= P[i];
p++;
}
nd *= (p+1);
int p1 = (pow(P[i],p+1)-1) % MOD;
int p2 = pow(P[i]-1,MOD-2) % MOD;
sd = (((sd*p1)%MOD)*p2) % MOD;
}
if (N>1)
{
nd *= 2;
sd = 1LL*sd*(N+1)%MOD;
}
fout << nd << ' ' << sd;
fout << '\n';
}
int main ()
{
sieve();
for (fin >> T; T; --T)
solve ();
}