Pagini recente » Cod sursa (job #1388758) | Cod sursa (job #223499) | Cod sursa (job #653047) | Cod sursa (job #1594282) | Cod sursa (job #1465918)
#include <cstdio>
#include <bitset>
#include <vector>
#define DN 1000001
#define REST 9973
using namespace std;
bitset <1000004> ciur;
vector<int>::iterator it;
vector <int> prime;
void c() {
for(int i=2; i<=DN; i++)
if(!ciur[i]) {
prime.push_back(i);
for(int j=i+i; j<=DN;j+=i) ciur[j]=1;
}
}
inline int pow(int x, int p) {
int rez = 1;
x %= REST;
for(; p; p >>= 1) {
if(p & 1) {
rez *= x;
rez %= REST;
}
x *= x;
x %= REST;
}
return rez;
}
int main()
{
int t,nd,sd,p,s,p1,p2;
long long n,cn;
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
c();
for(scanf("%d",&t);t;t--) {
scanf("%lld",&n);
cn=n;
nd=sd=1;
for(it=prime.begin(); (long long)(*it)*(*it)<=n; it++)
if(!(n%(*it))) {
p=0,s=1;
while(!(n%(*it))) {
n/=(*it);
p++;
}
nd*=(p+1);
p1=(pow(*it,p+1)-1)%REST;
p2=pow((*it)-1,REST-2)%REST;
sd=(((sd*p1)%REST)*p2)%REST;
}
if(n > 1) {
nd *= 2;
sd = (1LL*sd*(n+1)%REST);
}
printf("%d %d\n",nd,sd);
}
return 0;
}