Pagini recente » Cod sursa (job #2066394) | Cod sursa (job #1629902) | Cod sursa (job #753502) | Cod sursa (job #2573202) | Cod sursa (job #2086026)
#include <fstream>
#include <cstring>
#define file "ssnd"
#define N 1000000
#define MOD 9973
using namespace std;
ifstream fin(file".in");
ofstream fout(file".out");
long long t,n;
long long d[N],dn,a[N];
inline void desc()
{
dn = 0;
int div = 2;
memset(a,0,sizeof(a));
if(n%div == 0) d[++dn] = div;
while(n%div == 0) n/=div,++a[dn];
++div;
do
{
if(n%div == 0) d[++dn] = div;
while(n%div == 0) n/=div,++a[dn];
if(div * div > n) div = n;
else div+=2;
}while(n > 1);
}
inline void afis()
{
for(int i=1; i<=dn; ++i)
fout<<d[i]<<" "<<a[i]<<endl;
}
inline long long c1()
{
long long sol = a[1] + 1;
sol %= MOD;
for(int i=2; i<=dn; ++i)
sol = (sol*(a[i]+1))%MOD;
return sol;
}
inline long long rid_log(const long long &A,const long long &B)
{
if(B == 1) return A;
else if(B < 1) return 1;
long long sol = rid_log(A,B/2);
if(B%2) return ((sol*sol)%MOD * A)%MOD;
else return (sol*sol)%MOD;
}
inline long long inv_mod(long long X)
{
return rid_log(X,MOD-2);
}
inline long long c2()
{
long long sol = 1;
for(int i=1; i<=dn; ++i)
sol = (sol*((rid_log(d[i],a[i]+1) - 1) * inv_mod(d[i]-1) % MOD) ) %MOD;
return sol;
}
int main()
{
fin>>t;
while(t--)
{
fin>>n;
desc();
//afis();
fout<<c1()<<" "<<c2()<<"\n";
}
fin.close();
fout.close();
return 0;
}