Pagini recente » Cod sursa (job #861243) | Cod sursa (job #2620032) | Cod sursa (job #793740) | Cod sursa (job #2149000) | Cod sursa (job #2086076)
#include <fstream>
#define file "sumdiv"
#define MOD 9901
#define N 1000000
using namespace std;
ifstream fin(file".in");
ofstream fout(file".out");
typedef long long ll;
ll A,B;
ll p,d;
inline ll rid_log(ll A,ll B)
{
if(B == 1) return A;
if(B == 0) return 1;
ll solus = rid_log(A,B/2);
if(B%2) return ((solus*solus)% MOD *A ) % MOD;
else return (solus*solus)%MOD;
}
ll inv_mod(ll X)
{
return rid_log(X,MOD-2);
}
void solve()
{
while(A%2 ==0) ++d,A/=2;
ll sol = 1;
if(d > 0)
sol = sol * (rid_log(2,d*B+1) - 1);
p = 3;
do
{
d = 0;
while(A%p == 0) ++d, A/=p;
if(p * p <= A) p +=2;
else p = A;
if(d > 0)
sol = (sol*(rid_log(p,d*B + 1) - 1) % MOD *inv_mod(p-1)) % MOD;
} while(A > 1);
fout<<sol<<"\n";
}
int main()
{
fin>>A>>B;
if( A == 0)
{
fout<<"0\n";
return 0;
}
if( B == 0)
{
fout<<"1\n";
return 0;
}
solve();
fin.close();
fout.close();
return 0;
}