快速幂取模

 1 LL pow1_sum(LL a,LL b,LL mod) //a*b%mod
 2 {
 3     a=a%mod;
 4     b=b%mod;
 5     LL cur=0;
 6     while(b)
 7     {
 8         if(b&1)
 9         {
10             cur=cur+a;
11             if(cur>=mod) cur=cur-mod;
12         }
13         a=a<<1;
14         if(a>=mod) a=a-mod;
15         b=b>>1;
16     }
17     return cur;
18 }
19 LL pow_sum(LL a,LL b,LL mod) //a^b%mod
20 {
21     LL cur= 1;
22     a=a%mod;
23     while(b)
24     {
25         if(b&1)
26         {
27             cur=(cur*b)%mod;
28         }
29         a=(a*a)%mod;
30         b=b>>1;
31     }
32     return cur;
33 }

 

posted @ 2014-02-17 21:41  芷水  阅读(119)  评论(0编辑  收藏  举报