Pagini recente » Cod sursa (job #2127403) | Cod sursa (job #1403531) | Cod sursa (job #1050203) | Cod sursa (job #507468) | Cod sursa (job #2039150)
#include <iostream>
#include <cstdio>
#include <vector>
#define MOD 9973
#define ll long long
using namespace std;
bool vCiur[100005];
vector <int> 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<=100000; i++)
if(!vCiur[i])
{
vNrPrime.push_back(i);
for(int j=2; i*j<=100000; j++)
vCiur[i*j]=true;
}
}
ll lgput(ll nr,ll p)
{
ll rez=1;
while(p)
{
if(p%2)
{
rez*=nr%MOD;
p--;
}
nr*=nr%MOD;
p/=2;
}
return rez%MOD;
}
void solve(ll nr)
{
int cnt;
ll nrDiv=1,sumDiv=1;
for(int it=0;it<vNrPrime.size();it++)
{
cnt=1;
while(nr%vNrPrime[it]==0)
{
cnt++;
nr/=vNrPrime[it];
}
nrDiv*=cnt;
sumDiv*=(((lgput(vNrPrime[it],cnt)-1)*inversModular(vNrPrime[it]-1,MOD).first))%MOD;
}
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;
}