可以发现,要让答案答案大,那么c的次数多,也就是分解的次数多,那么将某个n按照因数分解,c的因数的个数次就是答案了。
#include<iostream>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll qmi(int a,int b)
{
ll res=1;
while(b)
{
if(b&1) res=res*a%mod;
b>>=1;
a=(ll)a*a%mod;
}
return res;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,c;
scanf("%d%d",&n,&c);
int cnt=0;
for(int i=2;i<=n/i;i++)
if(n%i==0)
{
while(n%i==0)
n/=i,cnt++;
}
if(n>1) cnt++;
printf("%lld\n",qmi(c,cnt));
}
}