Description
-
求
fci(ni)mod(109+7)
题解
-
设
n=∏i=1npibi
-
sumpow=∑i=1nbi
-
fci(ni)=nisumpow
实现
#include <bits/stdc++.h>
#define ll long long
const int N=1e6+10,mod=1e9+7;
using namespace std;
ll T,n,c;
bool np[N];
ll tot,p[N],mn[N];
ll ksm(ll a,ll b){ll r=1;while(b){if(b&1)r=r*a%mod;a=a*a%mod,b>>=1;}return r;}
void sieve(){
np[0]=np[1]=mn[1]=1;
for(int i=2;i<N;i++){
if(!np[i]) p[++tot]=i,mn[i]=i;
for(int j=1;j<=tot&&i*p[j]<N;j++){
np[i*p[j]]=1,mn[i*p[j]]=p[j];
if(i%p[j]==0) break;
}
}
}int main(){
sieve(),scanf("%lld",&T);
while(T--){
scanf("%lld%lld",&n,&c);
ll p=0;
while(n^1) n/=mn[n],++p;
printf("%lld\n",ksm(c,p));
}
}