Pagini recente » Cod sursa (job #2053991) | Cod sursa (job #191758) | Cod sursa (job #10646) | Cod sursa (job #1716779) | Cod sursa (job #2355356)
#include <fstream>
#include <bitset>
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
long long n;
int t,k,P[1000005],mod=9973;
bitset <1000005> viz;
void ciur() {
for(int i = 2; i < 1000005; ++i) {
if(viz[i] == 0) {
P[++k] = i;
for(int j = i+i; j < 1000005; j += i) {
viz[j] = 1;
}
}
}
}
inline int pow(int x, int p) {
int rez = 1;
x %= mod;
for(; p; p >>= 1) {
if(p & 1) {
rez *= x;
rez %= mod;
}
x *= x;
x %= mod;
}
return rez;
}
void solve()
{
f>>n;
int nd=1,sd=1;
for(int i=1;i<=k&&1ll*P[i]*P[i]<=n;i++)
if(n%P[i]==0)
{
int p=0;
while(n%P[i]==0)
{
n/=P[i];
++p;
}
nd*=(p+1);
int p1 = (pow(P[i], p+1) - 1)%mod;
int p2 = pow(P[i]-1,mod-2)%mod;
sd = (((sd*p1)%mod)*p2)%mod;
}
if(n>1) {
nd*=2;
sd=(1LL*sd*(n+1)%mod);
}
g<<nd<<" "<<sd<<"\n";
}
int main()
{
ciur();
for(f >> t; t; --t)
solve();
}