Pagini recente » Cod sursa (job #2563785) | Cod sursa (job #994637) | Cod sursa (job #2471466) | Cod sursa (job #56970) | Cod sursa (job #1174627)
#include <fstream>
using namespace std;
const int mod=9901;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
inline int putere(int a,int p)
{
int result=1;
a%=mod;
while(p)
{
if(p&1) {result=(1LL*result*a)%mod;--p;}
a=(1LL*a*a)%mod;
p>>=1;
}
return result;
}
struct desc
{int fact,cat;} v[5005];
int main()
{
int a,b,k=0,div=0,i,tot=1;
fin>>a>>b;
if(!(a&1))
{
v[++k].fact=2;
while( !(a&1) ) div++,a>>=1;
v[k].cat=div;
}
for(i=3;i*i<=a&&a>1;i+=2)
{
div=0;
while(a%i==0) div++,a/=i;
if(div>0) v[++k].fact=i,v[k].cat=div;
}
if(a>1)
{
if(a%mod==1)
tot=b+1;
else
{
v[++k].fact=a; v[k].cat=1;
}
}
for(i=1;i<=k;i++)
{ v[i].cat*=b;
tot=(1LL*tot*(putere(v[i].fact,v[i].cat+1)-1+mod)*putere(v[i].fact-1,mod-2))%mod;
}
fout<<tot;
}