Pagini recente » Cod sursa (job #772316) | Cod sursa (job #741779) | Cod sursa (job #112673) | Cod sursa (job #553060) | Cod sursa (job #2722649)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int NMAX=1e6+5;
const int MOD=9973;
int n,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&&w[i]*w[i]<=n; i++)
{
int val=w[i],e=0;
while(n%val==0)
{
n=n/val;
e++;
}
nrdiv*=(e+1);
if(e!=0)
{
int nr1=(lgput(val,e+1)-1)%MOD;
int nr2=lgput(val-1,MOD-2);
sumdiv=(((sumdiv*nr1)%MOD)*nr2)%MOD;
}
}
if(n>1)
{
nrdiv*=2;
sumdiv=(sumdiv*(n+1))%MOD;
}
fout<<nrdiv<<" "<<sumdiv;
fout<<'\n';
}
}