Pagini recente » Cod sursa (job #977704) | Cod sursa (job #2838106) | Cod sursa (job #2886330) | Cod sursa (job #1574211) | Cod sursa (job #2722651)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int NMAX=1e6+5;
const int MOD=9973;
long long n;
int w[1000005],prime[1000005],k,nrdiv=1,sumdiv=1;
void ciur()
{
prime[0]=prime[1]=1;
for(int i=2; i*i<=NMAX; i++)
if(prime[i]==0)
{
w[++k]=i;
for(int j=i+i; j<=NMAX; j+=i)
prime[j]=1;
}
}
int lgput(int base,int exp)
{
int aux=base,ans=1;
for(int i=1; i<=exp; i*=2)
{
if(i&exp)
ans=(ans*aux)%MOD;
aux=(aux*aux)%MOD;
}
return ans;
}
int main()
{
int t;
fin>>t;
ciur();
while(t--)
{
fin>>n;
nrdiv=1;
sumdiv=1;
for(int i=1; i<=k&&1LL*w[i]*w[i]<=n; i++)
{
int val=w[i],e=0;
while(n%val==0)
{
n=n/val;
e++;
}
nrdiv=(nrdiv*(e+1));
if(e!=0)
{
int nr1=(lgput(val,e+1)-1)%MOD;
int nr2=lgput(val-1,MOD-2)%MOD;
sumdiv=(((sumdiv*nr1)%MOD)*nr2)%MOD;
}
}
if(n>1)
{
nrdiv*=2;
sumdiv=(1LL*sumdiv*(n+1))%MOD;
}
fout<<nrdiv<<" "<<sumdiv;
fout<<'\n';
}
}