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