Pagini recente » Cod sursa (job #2537233) | Cod sursa (job #1319857) | Cod sursa (job #2494588) | Cod sursa (job #324131) | Cod sursa (job #405902)
Cod sursa(job #405902)
using namespace std;
#include<fstream>
const int MAX_N = 1000007, MOD = 9973;
int a[100007], P;
long long N;
bool u[MAX_N];
void ciur()
{
int i,j; a[P = 1] = 2;
for(i = 2; i < MAX_N; i+=2) u[i] = true;
for(i = 3; i < MAX_N; i+=2)
if(u[i] == false)
{
a[++P] = i;
for(j = i + i; j < MAX_N; j+=i)
u[j] = true;
}
}
int po(long long a, int b)
{
int rez = 1;
while(b)
{
if(b&1)
{
rez = (rez * a) % MOD;
b--;
}
else { a = (a * a) % MOD;b>>=1;}
}
return rez;
}
int main()
{
ifstream in("ssnd.in"); ofstream out("ssnd.out");
int T,i, r, nr; long long sol, tmp;
in>>T;
ciur();
for(; T; --T)
{
in>>N; sol = 1, nr = 1;
for(i = 1; a[i] * a[i] <= N; ++i)
{
for ( r = 0 ; N%a[i] == 0; ++r, N/=a[i]);
if(r == 0) continue;
nr *= (r + 1 );
tmp = (((1LL*po(a[i], r + 1) - 1) % MOD)* 1LL * po( a[i] - 1, MOD - 2 ) % MOD ) % MOD;
sol = (1LL*sol * tmp) % MOD;
}
if(N > 1)
{
r = 1;
nr *= (r + 1 );
tmp = (((1LL*po(N, r + 1) - 1) % MOD) * po( N - 1, MOD - 2 )*1LL % MOD ) % MOD;
sol = (1LL*sol * tmp) % MOD;
}
out<<nr<<" "<<sol<<"\n";
}
return 0;
}