http://acm.hdu.edu.cn/diy/contest_showproblem.php?cid=18447&pid=1001
已经过了时间不知道能不能ac 不过思路应该是没错的
题意:给定A,B,C,计算(A^(B^C))%100000007 (已知100000007是素数)
思路:费马小定理 :当 mod为质数 且 gcd(a,mod)=1 时 a^(p-1) %p =1
所以此题可以先运算 mi= b^c%(mod-1)
再算出 ans= a^mi % mod
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define ll __int64 #define mod 100000007 ll power_mod(ll a,ll b,ll c) { ll r=1,d=a; while(b) { if(b%2==1) r=(r*d)%c; d=(d*d)%c; b/=2; } return r; } int main() { ll a,b,c; ll mi,ans; while(scanf("%I64d%I64d%I64d",&a,&b,&c)!=EOF) { mi=power_mod(b,c,mod-1); ans=power_mod(a,mi,mod); printf("%I64d ",ans); } return 0; }