Pagini recente » Cod sursa (job #1463919) | Cod sursa (job #1916921) | Cod sursa (job #709521) | Cod sursa (job #2418107) | Cod sursa (job #2070889)
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
#define lim 1000005
#define mod 9973
long long n;
int T, K, P[lim];
bool viz[lim];
void ciur()
{
for (int i=2; i<lim; i++)
if (viz[i] == 0)
{
P[++K]=i;
for (int j=i+i; j<lim; j+=i)
viz[j]=1;
}
}
int lg_put (int x, int p)
{
int rez=1;
x%=mod;
for (; p; p>>=1)
{
if (p&1)
rez = (rez*x) % mod;
x = (x*x) % mod;
}
return rez;
}
void solve()
{
int nd=1, sd=1;
fin>>n;
for (int 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 = (lg_put (P[i], p+1) - 1) % mod;
int p2 = lg_put (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<<'\n';
}
int main()
{
ciur();
fin>>T;
while (T--)
solve ();
fout.close();
return 0;
}