Pagini recente » Rating Aylin Geafer (aylingeafer) | Cod sursa (job #1619239) | Cod sursa (job #1023714) | Cod sursa (job #1372136) | Cod sursa (job #1566192)
#include <fstream>
#include <bitset>
using namespace std;
ifstream f("sumdiv.in");
ofstream g("sumdiv.out");
int a,pr=1,b,mod=9901,pow,j,e[8001],put,ans,prim[8001],l,i;
bitset <8001> viz;
int main()
{
f>>a>>b;
if (b==0 && a==0) g<<0;
else if (b==0) g<<1;
else{
prim[l=1]=2;
for (i=3;i<=8000;i+=2)
if (viz[i]==false)
{
prim[++l]=i;
for (j=i*i;j<=8000;j+=i)
viz[j]=true;
}
for (i=1;i<=l && prim[i]*prim[i]<=a;i++)
if (a%prim[i]==0) {
while(a%prim[i]==0)
e[i]++,a/=prim[i];
}
for (i=1;i<=l;i++)
if (e[i]!=0) e[i]=e[i]*b,e[i]++;
for (i=1;i<=l;i++)
if (e[i]!=0)
{
put=prim[i];
ans=1;
for (j=0;(1<<j)<=e[i];j++)
{
if (e[i] & (1<<j))
ans*=put,ans%=mod;
put=put*put;
put%=mod;
}
ans--;
pr*=ans;
pr%=mod;
put=prim[i]-1;
ans=1;
for (j=0;(1<<j)<=(mod-2);j++)
{
if ((mod-2) && (1<<j))
ans*=put,ans%=mod;
put=put*put;
put%=mod;
}
pr*=ans;
pr%=mod;
}
if (a>1) {
pow=b+1;
put=a;
ans=1;
for (j=0;(1<<j)<=pow;j++){
if (pow & (1<<j))
ans*=put,ans%=mod;
put=put*put;
put%=mod;
}
ans--;
pr*=ans;
pr%=mod;
ans=1;
put=a-1;
for (j=0;(1<<j)<=(mod-2);j++)
{
if ((mod-2) & (1<<j))
ans*=put,ans%=mod;
put=put*put;
put%=mod;
}
pr*=ans;
pr%=mod;
}
g<<pr;
}
return 0;
}