Pagini recente » Cod sursa (job #2720346) | Cod sursa (job #675529) | Cod sursa (job #2887988) | Cod sursa (job #358802) | Cod sursa (job #2495191)
#include <cstdio>
#define MOD 9973
#define DIMBUFF 1000005
using namespace std;
FILE *fin, *fout;
long long t, n, i, m, a, b;
long long p[100005], f[1000005];
long long lgput (long long a, long long b){
if (b == 0){
return 1;
}
else{
long long r;
r = lgput (a, b/2);
if (b%2 == 0){
return 1LL*r*r%MOD;
}
else{
return 1LL*a*r*r%MOD;
}
}
}
void solve (long long n, long long &nrdiv, long long &sumadiv){
long long i, e, x, d;
nrdiv = sumadiv = 1;
for (i=1; 1LL*p[i]*p[i]<=n && n!=1; i++){
if (n%p[i] == 0){
d = p[i];
e = 1;
while (n%d == 0){
e++;
n /= d;
}
nrdiv = nrdiv * e;
x = lgput (d, e) - 1;
if (x < 0)
x += MOD;
x = x * lgput ((d+MOD-1)%MOD, MOD-2)%MOD;
sumadiv = sumadiv * x % MOD;
}
}
if (n != 1){
d = n%MOD;
nrdiv *= 2;
x = lgput (d, 2) - 1;
if (x < 0)
x += MOD;
x = x * lgput ((d+MOD-1)%MOD, MOD-2)%MOD;
sumadiv = sumadiv * x % MOD;
}
}
void precalc (){
int i, j;
m = 1;
p[1] = 2;
for (i=3; i<=1000000; i+=2){
if (f[i] == 0){
p[++m] = i;
for (j=i+i; j<=1000000; j+=i){
f[j] = 1;
}
}
}
}
char buff[DIMBUFF];
long long pp;
long long numar() {
long long val = 0;
while (!(buff[pp] >= '0' && buff[pp] <= '9')) {
pp++;
if (pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
while (buff[pp] >= '0' && buff[pp] <= '9') {
val = val*10 + buff[pp] - '0';
pp++;
if (pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
return val;
}
int main(){
fin = fopen ("ssnd.in", "r");
fout = fopen ("ssnd.out", "w");
fread(buff, 1, DIMBUFF, fin);
precalc();
t = numar();
for (;t--;){
n = numar();
solve(n, a, b);
fprintf (fout, "%lld %lld\n", a, b);
}
return 0;
}