Pagini recente » Borderou de evaluare (job #951036) | Cod sursa (job #2585086) | Cod sursa (job #481283) | Cod sursa (job #68320) | Cod sursa (job #2772349)
#include <iostream>
#include <fstream>
using namespace std;
int sumdiv(int a,int b,long long &p){
int nr;
long long x,y;
if (a%2==0){
nr=0;
while (a%2==0){
nr=nr+1;
a=a/2;
}
nr=nr*b+1;
x=2;
y=1;
while (nr!=0){
if (nr%2==1){
y=y*x%9901;
}
x=x*x%9901;
nr=nr/2;
}
p=p*(y-1)%9901;
}
for (int i=3;i*i<=a;i=i+2){
nr=0;
if (a%i==0){
while (a%i==0){
nr=nr+1;
a=a/i;
}
nr=nr*b+1;
x=i;
y=1;
while (nr!=0){
if (nr%2==1){
y=y*x%9901;
}
x=x*x%9901;
nr=nr/2;
}
p=p*((y-1)/((i-1)%9901))%9901;
}
}
if (a>1){
p=p*((a-1)%9901)%9901;
}
return p;
}
int main()
{
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int a,b;
long long p;
f>>a>>b;
p=1;
g<<sumdiv(a,b,p);
return 0;
}