Pagini recente » Cod sursa (job #1482443) | Cod sursa (job #301078) | Cod sursa (job #1462147) | Cod sursa (job #3130090) | Cod sursa (job #2047718)
#include <iostream>
#include <math.h>
#include <fstream>
#define maxn 1000000
#define mod 9973
using namespace std;
unsigned long long t, n, divisor, l, prod;
unsigned long long p[maxn], factor[maxn];
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int Div(int fact, int power){
unsigned long long s = 1, a, sol;
for(int i = 1; i <= power; ++i){
a = fact, sol = 1;
for(int j = 0; (1LL<<j) <= i; ++j){
if((1LL<<j) & i) sol = ((sol % mod) * (a % mod)) % mod;
a = ((a % mod) * (a % mod)) % mod;
}
s = ((s % mod) + (sol % mod)) % mod;
}
return s;
}
int main(){
f >> t;
while(t > 0){
--t; divisor = 1, l = 0, prod = 1;
f >> n;
if(n % 2 == 0){
factor[++l] = 2;
while(n % 2 == 0){
++p[l];
n /= 2;
}
}
for(int i = 3; i <= sqrt(n); i += 2){
if(n % i == 0){
factor[++l] = i;
while(n % i == 0){
++p[l];
n /= i;
}
}
}
if(n > 1){
factor[++l] = n;
++p[l];
}
for(int i = 1; i <= l; ++i)
divisor *= (p[i] + 1);
for(int i = 1; i <= l; ++i){
prod = ((prod % mod) * (Div(factor[i], p[i]) % mod)) % mod;
p[i] = 0;
}
g << divisor << ' ' << prod << '\n';
}
}