位运算基础知识
题目练手
题意及思路:
代码:
/*
2^1 = 2
2^2 = 4
2^4 = 16;
2^8 = 16*16
*/
#include <iostream>
using namespace std;
int main(){
int a,b,p;
cin >> a >> b >> p;
int ans = 1%p;
while(b){
if(b&1) ans = ans*1ll*a % p;
a = a*1ll*a %p;
b >>= 1;
}
cout << ans << endl;
return 0;
}
题意及思路:
代码:
/*
*/
#include <iostream>
using namespace std;
typedef unsigned long long ull;
int main(){
ull a,b,p;
cin >> a >> b >> p;
ull ans = 0;
while(b){
if(b&1) ans = (ans+a) %p;
a = a*2 %p;
b >>= 1;
}
cout << ans << endl;
return 0;
}