Basic Gcd Problem
想要让gcd(i,x)尽可能多。当嵌套层数最多时即为x的质因数的指数和
在对c求一次快速幂
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int pri[1000050];
int tong[1000050];
int cnt=0;
void sss(){
for(int i=2;i<=1e6;++i){
if(tong[i]==0) pri[++cnt]=i;
for(int j=i+i;j<1e6;j+=i) tong[j]++;
}
}// 素数筛
long long ksm(long long s,int k){
long long ans=1;
while(k){
if(k%2) ans=anss%mod;
s=ss%mod; k/=2;
}
return ans;
}//快速幂
int main (){
int T;
sss();
scanf("%d",&T);
while(T--){
int n,c,tot=0,x;
scanf("%d%d",&n,&c);x=n;
for(int i=1;i<=cnt&&pri[i]*pri[i]<=x;++i){
while(n%pri[i]==0) n/=pri[i],tot++;
}//求质因数指数个数
if(n!=1)++tot;
printf("%lld\n",ksm(c,tot));
}
}
京公网安备 11010502036488号