Pagini recente » Cod sursa (job #2294106) | Cod sursa (job #2544366) | Cod sursa (job #2030346) | Cod sursa (job #193810) | Cod sursa (job #2065314)
#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 = (Sol * N)%MOD;
N = (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 *= (((Power(Prim[i],e+1)-1)%MOD) * Invers(Prim[i]-1))%MOD;
Sum %= MOD;
}
}
if(N != 1)
{
Nr = (Nr * 2);
Sum = (1LL * Sum * (N+1)) % MOD;
}
fout << Nr << " " << Sum << "\n";
}
return 0;
}