Pagini recente » Cod sursa (job #1041664) | Cod sursa (job #18124) | Cod sursa (job #588628) | Cod sursa (job #2166891) | Cod sursa (job #969460)
Cod sursa(job #969460)
#include<fstream>
#define mod 9901
#define ll long long
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
long long b,S,put,j,ex,x,y,a;
void inv_mod(ll &x,ll &y,ll a,ll b);
void exp(long long x,long long p);
int main ()
{
f>>a>>b;
S=1;
if(a%2==0)
{
while(a%2==0)
{
a>>=1;
ex++;
}
put=ex*b;
exp(2,put+1);
}
for(j=3;j*j<=a;j+=2)
{
if(a%j==0)
{
put=ex=0;
while(a%j==0)
{
a/=j;
ex++;
}
put=ex*b;
inv_mod(x,y,j-1,mod);
while(x<=0)
x+=mod;
S*=x;
S%=mod;
exp(j,put+1);
}
}
if(a!=1)
{
inv_mod(x,y,a-1,mod);
while(x<=0)
x+=mod;
S*=x;
S%=mod;
exp(a,b+1);
}
g<<S;
return 0;
}
void inv_mod(ll &x,ll &y,ll a,ll b)
{
if(!b) {x=1; y=0;}
else
{
inv_mod(x,y,b,a%b);
ll x0,y0;
x0=x;y0=y;
x=y;
y=x0-a/b*y0;
}
}
void exp(long long x,long long p)
{
long long sol;
sol=1;
while(p)
{
if(p&1)
{
sol*=x;
sol%=mod;
}
p>>=1;
x*=x;
x%=mod;
}
sol--;
if(sol<0)
sol+=mod;
S*=sol;
S%=mod;
}