Pagini recente » Cod sursa (job #2646807) | Cod sursa (job #1082815) | Cod sursa (job #2936566) | Cod sursa (job #2397928) | Cod sursa (job #1214074)
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
typedef long long ll;
const ll mod = 9973;
ll a[1000005],prime[1000005],k;
void ciur(ll n){
for(ll i = 2; i <= n; i++){
if((a[i] & 1) == 0)
prime[k++] = i;
for(ll j = i * i; j <= n; j += i){
a[j] = 1;
}
}
}
inline ll pow_mod(ll a, ll b){
ll res = 1;
while(b){
if(b & 1)
res = (res * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return res;
}
inline ll inverse_mod(ll a){
ll x0 = 1,y0 = 0,x1 = 0,y1 = 1;
ll b = (ll) mod;
while(b){
ll r = a % b;
ll x,y,q = a / b;
a = b;
b = r;
x = x0 - q * x1;
y = y0 - q * y1;
x0 = x1; y0 = y1;
x1 = x; y1 = y;
}
return (mod + x0) % mod;
}
void solve(ll n){
ll divNo = 1,divSum = 1;
for(ll i = 0; i < k; i++){
if(prime[i] * prime[i] > n)
break;
ll exp = 1;
while(n % prime[i] == 0){
exp++;
n /= prime[i];
}
if(exp > 1){
divNo = (divNo * exp) % mod;
divSum = (divSum * (pow_mod(prime[i],exp) - 1) * inverse_mod(prime[i] - 1)) % mod;
}
}
if(n > 1){
divNo <<= 1;
divSum = (divSum * (n + 1)) % mod;
}
printf("%lld %lld\n", divNo,divSum);
}
int main(){
freopen("ssnd.in","r",stdin);
freopen("ssnd.out","w",stdout);
ciur(1000000);
int t;
ll n;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
solve(n);
}
return 0;
}