我们可以发现的所有质因子其实就是个的所有质因子
所以我们先求出a的所有质因子
然后把数量乘b就可以了
而对于一个数的所有质因子之和
等于(1+p1+p1^2 +p13+…p1k1) * (1+p2+p22+p23+….p2^k2) * (1+p3+ p3^3 +…+ p3^k3) * … * (1+pn+pn^2 +pn^ +…pn^kn)
而对于每一部分,都是一个等比数列
只需要递归去求
然后把所有乘起来就是了
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<math.h>
#include<cstring>
#include<string.h>
#include<cstdlib>
using namespace std;
#define ll long long
#define mod 9901
ll a,b;
ll de[1000000],num[100000],j,ans;
inline int read(){
char ch=getchar();
int res=0;
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) res=(res<<3)+(res<<1)+(ch^48),ch=getchar();
return res;
}
inline ll fen(ll k)
{
for(ll i=2;i*i<=k;i++)
{
if(k%i==0)
{
de[++j]=i;
while(k-(k/i)*i==0)
{
num[j]++;
k/=i;
}
num[j]*=b;
}
}
if(k!=1)
{
de[++j]=k;
num[j]=b;
}
}
inline ll mul(ll p,ll n)
{
int as=1;
while(n>0)
{
if(n%2)
{
as=(as*p)%mod;
}
n/=2;
p=p*p%mod;
}
return as;
}
inline ll sum(ll p,ll n)
{
if(n==0) return 1;
if(n%2)
{
return (sum(p,n/2)*(1+mul(p,n/2+1)))%mod;
}
return (sum(p,n/2-1)*(1+mul(p,n/2+1))+mul(p,n/2))%mod;
}
int main(){
a=1ll*read();
b=1ll*read();
fen(a);
ans=1;
for(int i=1;i<=j;i++)
{
ans*=sum(de[i],num[i]);
ans%=mod;
}
cout<<ans<<endl;
return 0;
}