Pagini recente » Cod sursa (job #1885812) | Cod sursa (job #1665698) | Cod sursa (job #1874334) | Cod sursa (job #2701748) | Cod sursa (job #2040533)
#include <iostream>
#include <cstdio>
#include <vector>
#define MOD 9973
#define ll long long
using namespace std;
bool vCiur[1000005];
vector <ll> vNrPrime;
pair<long long,long long> inversModular(ll a,ll b)
{
if(!b)
return make_pair(1,0);
pair<ll,ll> p=inversModular(b,a%b);
return make_pair(p.second,p.first-p.second*(a/b));
}
void ciur()
{
for(int i=2; i<=1000000; i++)
if(!vCiur[i])
{
vNrPrime.push_back(i);
for(int j=2; i*j<=1000000; j++)
vCiur[i*j]=true;
}
}
ll lgput(ll nr,ll p)
{
ll rez=1;
while(p)
{
if(p%2)
{
rez*=nr;
}
nr*=nr;
p/=2;
}
return rez;
}
void solve(ll nr)
{
int cnt;
ll nrDiv=1,sumDiv=1;
for(int it=0;it<vNrPrime.size();it++)
{
if(vNrPrime[it]*vNrPrime[it]>nr)
break;
cnt=1;
while(nr%vNrPrime[it]==0)
{
cnt++;
nr/=vNrPrime[it];
}
if(cnt!=1)
{
sumDiv*=(((lgput(vNrPrime[it],cnt)-1)/(vNrPrime[it]-1)));
sumDiv%=MOD;
nrDiv*=cnt;
}
}
if(nr!=1)
{
sumDiv*=((lgput(nr,2)-1)/(nr-1));
sumDiv%=MOD;
nrDiv*=2;
}
printf("%lld %lld\n",nrDiv,sumDiv);
}
int main()
{
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur();
int t;
long long nr;
scanf("%d",&t);
for(int i=1; i<=t; i++)
{
scanf("%lld",&nr);
solve(nr);
}
return 0;
}