Pagini recente » Cod sursa (job #299027) | Cod sursa (job #2998718) | Cod sursa (job #147208) | Cod sursa (job #127133) | Cod sursa (job #2565361)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t;
const int MOD = 9973;
bool c[1000050];
int prime[100090];
int nr_prime;
void Ciur()
{
int i,j;
c[2] = true;
for(i = 3; i<=1000050; i+=2 )
c[i] = true;
for( i = 3; i*i <= 1000050; i+=2)
if(c[i] == true)
for(j = 3*i; j<=1000050; j+=2*i)
c[j] = false;
prime[++nr_prime] = 2;
for(i = 3; i<=1000050; i+=2)
if(c[i] == true)
prime[++nr_prime] = i;
}
long long Exp(int n, int p)
{
if(p == 0)
return 1;
if(p%2 == 0)
{
long long P = Exp(n,p/2)%MOD;
return P*P%MOD;
}
else
{
long long P = Exp(n,p/2)%MOD;
return P*P%MOD*n%MOD;
}
}
long long invers(long long x)
{
return Exp(x,MOD-2)%MOD;
}
void Do(long x)
{
int i,j;
long long power;
long long inv;
long long sum = 1;
long long total_div = 1;
int ct, d = 2;
int nr = 0;
if(c[x] == true)
{
fout<<2<<" "<<x+1<<"\n";
return;
}
while(x > 1)
{
d = prime[++nr];
ct = 0;
while(x % d == 0)
{
ct++;
x/=d;
}
if(ct > 0)
{
total_div = total_div*(ct+1)%MOD;
power = Exp(d,ct+1)-1;
inv = Exp(d-1, MOD-2)%MOD;
power = power*inv%MOD;
sum = sum*power%MOD;
}
}
fout<<total_div<<" "<<sum<<"\n";
}
void Read()
{
int i,j;
long long x;
fin>>t;
for(i=1; i<=t; ++i)
{
fin>>x;
Do(x);
}
}
int main()
{
Ciur();
Read();
return 0;
}