Pagini recente » Cod sursa (job #561997) | Cod sursa (job #1276794) | Cod sursa (job #2375754) | Cod sursa (job #1979544) | Cod sursa (job #698202)
Cod sursa(job #698202)
#include <fstream>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
const int M=9901;
int i,A,B;
long long S=1;
int put(int c, int p)
{
c%=M;
long long R=1;
while(p>0)
{
if(p&1) { R=R*c; R%=M; }
c=c*c;
c%=M;
p>>=1;
}
return R;
}
void rez()
{
int p,p1,p2;
for(i=2;i*i<=A;i++)
{
if(A%i>0) continue;
p=0;
while(A%i==0)
{
A/=i;
p++;
}
if(i%M==1) S*=1LL*(p+1) % M;
else
{
p1= ( put(i,p*B+1) - 1) + M;
p1%=M;
p2= put(i-1,M-2) % M;
S=S* 1LL * (p1 * p2);
S%=M;
}
}
if(A>1)
{
if(A % M == 1 )
S=(S* 1LL * (B % M + 1)) % M;
else
{
p1= ( put(A,B+1) - 1) + M;
p1%=M;
p2=put(A-1,M-2) % M;
S=(S* 1LL * (p1 * p2));
S%=M;
}
}
}
int main()
{
f >> A >> B;
rez();
if(A==0) g << "0";
else g << S;
}