Pagini recente » Cod sursa (job #1980072) | Cod sursa (job #1702724) | Cod sursa (job #1467984) | Cod sursa (job #883014) | Cod sursa (job #1250931)
#include <fstream>
#define NMax 1000005
#define MOD 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long Nr;
int T,N,Sum;
bool prim[NMax];
int P[NMax],K;
void Sieve()
{
for(int i=2;i<NMax;i++)
prim[i]=1;
for(int i=2;i<NMax;i++)
{
if(prim[i])
{
P[++K]=i;
for(int j=i+i;j<NMax;j+=i)
prim[j]=0;
}
}
}
int Pow(int N, int P)
{
int Sol=1;
while(P)
{
if(P&1)
Sol=(Sol*N)%MOD;
N = (N*N)% MOD;
P=P>>1;
}
return Sol;
}
int main()
{
Sieve();
fin>>T;
while(T--)
{
fin>>N;
Nr=1; Sum = 1;
for(int f=1;f<=K && 1LL*P[f]*P[f]<=N ;f++)
{
int e=0;
while(N%P[f]==0)
{
N=N/P[f]; e++;
}
Nr *= (e+1);
Sum= (Sum * (Pow(P[f],e+1)-1)*Pow(P[f]-1,MOD-2))%MOD;
}
if(N!=1)
{
Nr *= 2;
Sum = (Sum * (N+1))%MOD;
}
fout<<Nr<<" "<<Sum<<"\n";
}
return 0;
}