题目
分析
主要是一个公式:
费马小定理:a/b%M=a*b^M-2%M
快速幂就好了
代码
1 #include<iostream> 2 #include<cstdio> 3 #define M 1000000007 4 using namespace std; 5 long long mi(long long a,long long b) 6 { 7 long long ans=1,x=a%M; 8 while (b) 9 { 10 if(b&1!=0) ans*=x; 11 ans%=M; 12 x*=x; 13 x%=M; 14 b>>=1; 15 } 16 return ans%=M; 17 } 18 int main () 19 { 20 long long T; 21 cin>>T; 22 long long a,q,n,f; 23 for (int i=1;i<=T;i++) 24 { 25 scanf("%lld %lld %lld",&a,&q,&n); 26 if (q==1) 27 cout<<((a%M)*(n%M))%M<<endl; 28 else 29 { 30 f=mi(q-1,M-2)%M; 31 a=(a*(mi(q,n)-1))%M; 32 printf("%lld ",a*f%M); 33 } 34 35 } 36 }