Pagini recente » Cod sursa (job #2639812) | Cod sursa (job #420009) | Cod sursa (job #3126809) | Cod sursa (job #812614) | Cod sursa (job #530219)
Cod sursa(job #530219)
#include <fstream>
using namespace std;
int S=1,n,b;
const int mod=9901;
ifstream in("sumdiv.in");
ofstream out("sumdiv.out");
void euclid(int a,int b,int &x,int &y,int &d)
{
if (!b)
{
x=1;y=0;d=a;
return;
}
int x1,y1;
euclid(b,a%b,x1,y1,d);
x=y1;
y=x1-a/b*y1;
}
inline int inv(int a,int n)
{
int x,y,d;
euclid(a,n,x,y,d);
while (x<0)
x+=n;
return x;
}
inline int pow(int x,int n)
{
if (!n)
return 1;
if (n==1)
return x%mod;
return pow(x*x%mod,n>>1)*pow(x,n&1)%mod;
}
inline void add(int x,int n)
{
S=S*(pow(x,n+1)+mod-1)%mod*inv(x-1,mod)%mod;
}
int main()
{
int i,p;
in>>n>>b;
for (i=2;i*i<=n;i++)
if (n%i==0)
{
for (p=0;n%i==0;p++,n/=i);
add(i,b*p);
}
if (n!=1)
add(n,b);
out<<S<<"\n";
return 0;
}