Pagini recente » Cod sursa (job #1278088) | Cod sursa (job #1632333) | Cod sursa (job #3256462) | Cod sursa (job #1708120) | Cod sursa (job #3332617)
#include <iostream>
#include <fstream>
#include <bitset>
#define maxim 1000003
#define MOD 9973
using namespace std;
int prim[maxim+1],t,k;
long long n;
bitset <maxim+1> viz;
ofstream g("ssnd.out");
void ciurul()
{
for(int i=2;i<maxim;++i)
if(viz[i]==0)
{prim[++k]=i;
for(int j=2*i;j<maxim;j+=i)
viz[j]=1;
}
}
long long exp(long long baza, long long expo)
{
long long rez=1;
while(expo!=0)
{
if(expo%2==0)
{
baza=((baza%MOD)*(baza%MOD))%MOD;
expo=expo/2;
}
else
{
rez=((rez%MOD)*(baza%MOD))%MOD;
--expo;
}
}
return rez%MOD;
}
void solve(long long nr)
{
long long nd=1,sd=1;
for(int i=1;i<=k && 1LL*prim[i]*prim[i]<=n;++i)
{
if(nr%prim[i]==0)
{
int p=0;
while(nr%prim[i]==0)
{
++p;
nr/=prim[i];
}
nd = 1LL*((nd%MOD)*((p+1)%MOD))%MOD;
long long p1=(exp(prim[i],p+1)-1)%MOD;
long long p2=exp(prim[i]-1,MOD-2)%MOD;
sd=(((sd*p1)%MOD)*p2)%MOD;
}
}
if(nr!=1)
{
nd=((nd%MOD)*2)%MOD;
sd = (1LL*sd*(nr+1) % MOD);
}
g<<nd<<' '<<sd<<'\n';
}
int main()
{
ciurul();
ifstream f("ssnd.in");
f>>t;
for(int i=1;i<=t;++i)
{
f>>n;
solve(n);
}
f.close();
g.close();
return 0;
}