Pagini recente » Cod sursa (job #381265) | Cod sursa (job #1146177) | Cod sursa (job #1052339) | Cod sursa (job #819273) | Cod sursa (job #2245604)
#include <bits/stdc++.h>
using namespace std;
long long n,nr,s;
const int Mod=9973;
int t,p[1000001],C[1000001];
void solve();
ofstream out("ssnd.out");
long long Pow(long long x,long long y);
void ciur();
int main()
{
ifstream in("ssnd.in");
in>>t;
ciur();
int i;
for (int z=1;z<=t;z++)
{
in>>n;
solve();
}
}
void solve()
{
int put=0,i=1;
long long p1,p2;
nr=1;
s=1;
while (p[i]*p[i]<=n)
{
put=0;
while (n%p[i]==0)
{
put++;
n/=p[i];
}
if (put)
{
nr*=(put+1);
nr%=Mod;
p1=Pow(p[i],put+1)-1%Mod;
p2=Pow(p[i]-1,Mod-2)%Mod;
s=s*p1%Mod*p2%Mod;
}
i++;
}
if (n>1)
{
nr*=2;
s=s*(n+1)%Mod;
}
out<<nr<<" "<<s<<"\n";
}
long long Pow(long long x,long long y)
{long long fin=1;
while (y>0)
{
if (y%2==1)
{
fin*=x;
fin%=Mod;
}
x*=x;
x%=Mod;
y/=2;
}
fin%=Mod;
return fin;
}
void ciur()
{int i,N=1000000,j;
for (i=4;i<=N;i+=2)
C[i]=1;
for (i=3;i*i<=N;i++)
{
if (C[i]==0)
{
for (j=i*i;j<=N;j+=i)
C[j]=1;
}
}
int loc=0;
for (j=2;j<=N;j++)
if (C[j]==0)
p[++loc]=j;
}