Pagini recente » Cod sursa (job #1014924) | Cod sursa (job #575852) | Cod sursa (job #1587125) | Cod sursa (job #2494104) | Cod sursa (job #2066667)
#include <fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD = 9973;
const int VMax = 1000000;
bool P[VMax + 5];
int Prim[80000],k;
long long N;
int T,Nr,Sum;
void Sieve()
{
for(int i = 2; i<= VMax; ++i)
{
if(P[i] == 0)
{
Prim[++k] = i;
for(int j = i; j <= VMax; j += i)
P[j] = 1;
}
}
}
int Power(int N, int P)
{
int Sol = 1;
while(P)
{
if(P%2 == 1)
Sol = ( 1LL * Sol * N)%MOD;
N = (1LL * N*N)%MOD;
P = P / 2;
}
return Sol;
}
int Invers(int N)
{
return Power(N,MOD-2);
}
int main()
{
Sieve();
fin >> T;
while(T--)
{
fin >> N;
Nr = Sum = 1;
for(int i = 1; (i <= k) && 1LL*Prim[i]*Prim[i] <= N; ++i)
{
int e = 0;
while(N%Prim[i] == 0)
{
N = N/Prim[i];
e++;
}
if(e)
{
Nr *= (e+1);
Sum = (1LL *Sum * (1LL*((Power(Prim[i],e+1)-1)%MOD) * Invers(Prim[i]-1))%MOD)%MOD;
}
}
if(N != 1)
{
Nr = (Nr * 2);
Sum = (1LL * Sum * (N+1)) % MOD;
}
fout << Nr << " " << Sum << "\n";
}
return 0;
}