Pagini recente » Cod sursa (job #1320350) | Cod sursa (job #2176131) | Cod sursa (job #2487859) | Cod sursa (job #1601673) | Cod sursa (job #756726)
Cod sursa(job #756726)
#include<fstream>
#define mod 9901
#define ll long long
using namespace std;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
long long A, B, S;
ll put(ll b, ll p)
{
ll R,X,i;
b%=mod;
for (i=1,R=1,X=b;i<=p;i<<=1)
{
if (i&p) R=R*X%mod;
X=X*X%mod;
}
return R%mod;
}
long long desc(ll x, ll nr)
{
nr *= B;
ll aux1 = (put(x, nr + 1ll) - 1+ mod ) % mod;
ll aux2 = put(x - 1ll, mod - 2ll) % mod;
return (aux1 * aux2) %mod;
}
void read()
{
S = 1;
fin >>A>>B;
if(A % mod ==0 || A == 1|| B == 0 )
{
fout<< 1; return ;
}
if( A == 0)
{
fout<< 0 ; return ;
}
for(int i = 2; i * i <= A and A > 1 ; ++i)
{
if(A % i == 0)
{
ll nr = 0;
while(A % i == 0 && A > 1)
A /= i, ++nr;
if(i % mod == 1)
{
S = S * (nr * B + 1ll)% mod;
continue;
}
long long K = desc(i, nr) %mod;
S = (S * K )% mod;
}
}
//fout << put( 2, 10) ;
if(A > 1){if(A % mod == 1)
{
S = S * (1 * B + 1ll)% mod;
}
else
S = (S * desc(A, 1)) % mod;
}
fout <<S;
}
int main()
{
read();
fin.close();
return 0;
}