快速幂位运算版

快速幂位运算版

 1 #include<bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 /*int pow_mod(int x , int  y , int p){
 6     int ret = 1;
 7     while(y){
 8         if(y & 1) ret = (ret * x) % p;
 9         printf("ret = %I64d , x = &I64d , y = %I64d\n" , ret , x , y);
10         x = (x * x) % p ;
11         y >>= 1;
12     }
13     return ret;
14 }
15 */
16 int pow_mod(int m , int n , int k){
17     int b = 1;
18     while (n){
19           if (n & 1)
20              b = (b * m) % k;
21           n = n >> 1 ;
22           m = (m * m) % k;
23     }
24     return b;
25 } 
26 int main(){
27     int x , y , p; //x 的 y 次幂 对 p取模
28     cin >> x >> y >> p;
29     cout << pow_mod(x , y , p);
30 }
位运算

广告:清北学堂

posted @ 2017-05-12 08:18  秦时、长浩  阅读(301)  评论(0编辑  收藏  举报