Pagini recente » Cod sursa (job #3039326) | Cod sursa (job #2740625) | Cod sursa (job #950938) | Cod sursa (job #1248178) | Cod sursa (job #2647485)
#include <bits/stdc++.h>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int MOD=9973;
bool ciur[1000001];
int prime[1000001],k=0;
int lgput(int number,int power)
{
int ans=1;
while(power)
{
if(power%2!=0)
{
power--;
ans=(ans*number)%MOD;
}
else
{
number=(number*number)%MOD;
power/=2;
}
}
return ans;
}
int main()
{
for(int i=2;i<1000005;i++)
{
if(ciur[i]==0)
{
for(int j=i+i;j<1000005;j+=i)
{
ciur[j]=1;
}
prime[++k]=i;
}
}
int t;
in>>t;
while(t--)
{
long long n;
in>>n;
int ans1=1,ans2=1,power;
for(int i=1;i<=k&&1ll*prime[i]*prime[i]<=n;i++)
{
power=0;
if(n%prime[i]==0)
{
while(n%prime[i]==0)
{
power++;
n/=prime[i];
}
}
ans1=ans1*(power+1);
int a=(lgput(prime[i],power+1)-1) % MOD;
int b=lgput(prime[i]-1,MOD-2) % MOD;
ans2=(((ans2*a)%MOD)*b)%MOD;
}
if(n>1)
{
ans1*=2;
ans1%=MOD;
ans2=(1ll*ans2*(n+1))%MOD;
ans2%=MOD;
}
out<<ans1<<" "<<ans2<<"\n";
}
return 0;
}