Pagini recente » Cod sursa (job #3254899) | Cod sursa (job #823363) | Cod sursa (job #1905707) | Cod sursa (job #2792601) | Cod sursa (job #1607729)
#include <iostream>
#include <fstream>
#include <cmath>
#define r 9973
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
long long a;
long long S, amS = 1;
long long powF(long long a, long long b, long long i) {
if(b == 0)
return 1;
if(b == 1)
return a%r;
if(b == 2)
return (a*i)%r;
if(b % 2 == 0) {
long long p = powF(a, b/2, i)%r;
return (p * p)%r;
} else {
return ((powF(a, b-1, i))%r * i)%r;
}
}
void fact(long long x) {
long long sum = 1;
int div = 0;
int am = 0;
while(x%2==0) {
x /= 2;
div = 2;
am++;
}
if(div != 0) {
long long temp = powF(div, am+1, div)-1;
long long temp2 = div-1;
sum *= temp/temp2;
sum %= r;
amS *= (am+1)%r;
amS %= r;
div = 0;
am = 0;
}
for(int i = 3; i <= x; i += 2) {
while(x%i == 0) {
div = i;
am++;
x /= i;
}
if(div != 0) {
long long temp = powF(div, am+1, div)-1;
long long temp2 = div-1;
sum *= temp/temp2;
sum %= r;
amS *= (am+1)%r;
amS %= r;
div = 0;
am = 0;
}
}
S = sum%r;
}
int main() {
int n;
in >> n;
for(int i = 0; i < n; i++) {
in >> a;
fact(a);
out << amS << " " << S << '\n';
S = 1;
amS = 1;
}
return 0;
}