可以发现,要让答案答案大,那么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));
	}
}