Pagini recente » Cod sursa (job #2155303) | Cod sursa (job #1729030) | Cod sursa (job #1754175) | Cod sursa (job #473377) | Cod sursa (job #1204974)
#include<fstream>
#include<cmath>
#include<algorithm>
#include<bitset>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int modulo=9973;
const int MAD=1000000;
const int leg=100000;
int t,nr,primes[leg];
int form[leg],puteri[leg];
long long n,sum;
bitset<MAD+5>viz;
inline void Ciur()
{
int i;
long long j;
primes[++primes[0]]=2;
for (i=3;i<=MAD;i+=2)
if (!viz[i])
{
primes[++primes[0]]=i;
for (j=1LL*i*i;j<=MAD;j+=i) viz[j]=1;
}
}
inline long long LOG(int x,int y)
{
if (y==1) return x;
else if (y&1) return x*LOG(x,y-1);
else return LOG(x,y>>1)*LOG(x,y>>1);
}
inline void SOLVE(long long x)
{
int i,cont,root;
nr=1;sum=1;
i=1;puteri[0]=form[0]=0;
while (i<=primes[0] && 1LL*primes[i]*primes[i]<=x)
{
cont=0;
while (!(x%primes[i])) {x/=primes[i];cont++;}
if (cont) {form[++form[0]]=primes[i];puteri[++puteri[0]]=cont;}
i++;
}
if (x>1) {form[++form[0]]=x;puteri[++puteri[0]]=1;}
for (i=1;i<=puteri[0];i++) nr=1LL*nr*(puteri[i]+1);
fout<<nr<<" ";
for (i=1;i<=form[0];i++)
{
sum=(1LL*sum*(((LOG(form[i],puteri[i]+1)-1)/(form[i]-1))));
sum%=modulo;
}
fout<<sum<<"\n";
}
int main()
{
fin>>t;
Ciur();
while (t--)
{
fin>>n;
SOLVE(n);
}
return 0;
}