Pagini recente » Cod sursa (job #2228244) | Cod sursa (job #493020) | Cod sursa (job #774673) | Cod sursa (job #2938112) | Cod sursa (job #1363808)
#include <fstream>
#define n 9901
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long sol=1;
void euclid(int a, int b, int &x, int &y)
{
if (b==0) {
x=1;
y=0;
return;
}
int x0,y0;
euclid(b,a%b,x0,y0);
x=y0;
y=x0 - y0 * (a/b);
}
int im(int k)
{
int x,y;
euclid(k,n,x,y);
return (x%n+n)%n;
}
int exponentiere(int a, int b)
{
if (b==0)
return 1;
int x=exponentiere(a,b/2);
if (b%2==0)
return x*x%n;
else
return a*x%n*x%n;
}
void solve(int p , int q)
{
long long x=exponentiere(p,q+1)-1;
if (x<0)
x+=n;
if (x!=0) {
sol*=1LL*x;
sol%=n;
if (p>1)
sol*=1LL*im(p-1);
sol%=n;
}
}
int main()
{
int i,j,a,b,e;
long long p=1;
f>>a>>b;
p=2;
while (a-1) {
if (a%p==0) {
e=1;
a/=p;
while (a%p==0) {
a/=p;
e++;
}
solve(p%n,e*b);
}
else
if (p*p>a) {
solve(a%n,b);
a=1;
}
p++;
}
g<<sol;
return 0;
}