
这一题 必须用快速幂 去解决 不然 会超时 . o(N)的算法 已经无法拯救人类 , 现在最小也要 O (log N)的算法出手 才有人看...
1 /*求(a^b)%mod*/
1 /*求(a^b)%mod*/ 2 #include<stdio.h> 3 #include<string.h> 4 #include<math.h> 5 #include<iostream> 6 #include<algorithm> 7 #include<queue> 8 #include<vector> 9 #include<set> 10 #include<stack> 11 #include<string> 12 #include<sstream> 13 #include<map> 14 #include<cctype> 15 #include<limits.h> 16 using namespace std; 17 __int64 a,b,mod; 18 __int64 speed_pow(__int64 x,__int64 n) 19 { 20 __int64 res=1; 21 while(n>0) 22 { 23 if(n&1) 24 res=(res*x)%mod; //去掉 mod 就是 普通的求 快速幂 . 25 x=(x*x)%mod; 26 n>>=1; 27 } 28 return res; 29 } 30 int main() 31 { 32 while(scanf("%I64d%I64d%I64d",&a,&b,&mod)!=EOF) 33 { 34 __int64 result=speed_pow(a,b); 35 printf("%I64d ",result); 36 } 37 return 0; 38 }