Pagini recente » Cod sursa (job #3162433) | Cod sursa (job #1789827) | Cod sursa (job #1664695) | Cod sursa (job #373970) | Cod sursa (job #1607710)
#include <iostream>
#include <fstream>
#include <cmath>
#define r 9901
using namespace std;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
int a,b;
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;
}
}
long long 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*b+1, div)-1;
long long temp2 = div-1;
sum *= temp/temp2;
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*b+1, div)-1;
long long temp2 = div-1;
sum *= temp/temp2;
div = 0;
am = 0;
}
}
return sum;
}
int main() {
in >> a >> b;
out << fact(a)%r;
return 0;
}