快速幂和快速幂 取模

这一题  必须用快速幂 去解决 不然 会超时 .  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\n",result);
36     }
37     return 0;
38 }
posted @ 2016-06-01 13:56  X-POWER  阅读(239)  评论(0编辑  收藏  举报