Pagini recente » Cod sursa (job #2187766) | Cod sursa (job #2945792) | Cod sursa (job #1647748) | Cod sursa (job #2011480) | Cod sursa (job #2277064)
#include <iostream>
#include <cstdio>
#define mod 9973
#define N 1000005
using namespace std;
long long ciur[N];
int n, t, s, nr;
void eratostene()
{
for(int d=2;d<=N;d++)
if(!ciur[d])
for(int i=2;i*d<=N;i++)
ciur[i*d]=1;
}
void inv_modular(int a, int b, int &l, int &k)
{
if(b==0)
{
l=1;
k=0;
return;
}
int k1, l1;
inv_modular(b, a%b, l1, k1);
l=k1;
k=l1-(a/b)*k1;
}
int putere(int a, int p)
{
int prod=1;
while(p>0)
{
if(p%2==0)
{
a=(1LL*a*a)%mod;
p=p/2;
}
else
{
p--;
prod=(prod*1LL*a)%mod;
}
}
return prod;
}
int main()
{
freopen("ssnd.in", "r", stdin);
freopen("ssnd.out", "w", stdout);
eratostene();
scanf("%d\n", &t);
for(int test=0;test<t;test++)
{
scanf("%d\n", &n);
s=1; nr=1;
int p=0;
while(n%2==0)
{
n=n/2;
p++;
}
if(p>0)
{
nr=(1LL*nr*(p+1))%mod;
s=(1LL*putere(2, p+1))%mod-1;
}
for(int i=3;i*i<=n;i+=2)
if(!ciur[i])
{
p=0;
while(n%i==0)
{
n=n/i;
p++;
}
if(p>0)
{
nr=(1LL*nr*(p+1))%mod;
int nc=(putere(i, p+1)%mod)-1;
int l, k;
inv_modular(i-1, mod, l, k);
while(l<0)
l+=mod;
if(l!=0)
s=(1LL*s*(1LL*nc*l)%mod)%mod;
else
s=(1LL*s*nc)%mod;
}
}
if(n>1)
{
nr=nr*2;
int nc=(1LL*n*n)%mod-1;
int l, k;
inv_modular(n-1, mod, l, k);
while(l<0)
l+=mod;
if(l!=0)
s=(1LL*s*(1LL*nc*l)%mod)%mod;
else
s=(1LL*s*nc)%mod;
}
printf("%d %d\n", nr, s);
}
return 0;
}