Pagini recente » Cod sursa (job #3269915) | Cod sursa (job #2539242) | Cod sursa (job #1253720) | Cod sursa (job #585365) | Cod sursa (job #1974361)
#include <fstream>
using namespace std;
const int MOD=9901;
ifstream f ("sumdiv.in");
ofstream g ("sumdiv.out");
int A,B,S=1;
int putere(int x,long long p) //exponentiere rapida
{
x%=MOD;
int sol=1;
for(;p;p>>=1)
{
if(p&1) sol=(sol*x)%MOD;
x=(x*x)%MOD;
}
return sol;
}
inline int solve(int i,int p) //inmultim cu fractia, numarator ori invers md numitor
{
if(i%MOD==1) return p*B+1;
return (putere(i,1LL*p*B+1)+MOD-1)*(putere(i-1,MOD-2))%MOD;
}
int main()
{
f>>A>>B;
int a=A;
for(int i=2;i*i<=A;++i)//desc factori
{
int p=0;
while(a%i==0) a/=i,++p;
if(p) S*=solve(i,p),S%=MOD;
}
if(a>1) S*=solve(a,1),
S%=MOD;
g<<S;
}