标签:using class pre turn wing 开始 inf stream ace
1.快速幂
37=?
【析】7 = 111
31 =3
32 =9
34 =81
……
32^(n-1) --n:二进制位数 0~n-1
所以37=3×9×81
【例1】https://www.acwing.com/problem/content/91/
#include <iostream> using namespace std; int main(){ int a,b,p; cin>>a>>b>>p; int res = 1 % p; //答案 while(b){ if(b&1) res = res * 1ll * a % p; //从b的个位开始考虑,如果b个位是1,则res*a //1ll:longlong型整数1,防止溢出
//先对乘数因子取模再运算不影响结果,(a * b) % p = (a % p * b % p) % p a = a * 1ll * a % p; //十位:不断平方 b >>= 1; //b右移1位,去掉个位 //6>>1就是把00000110右移一位变为00000011 } cout << res << endl; return 0; }
标签:using class pre turn wing 开始 inf stream ace
原文地址:https://www.cnblogs.com/kirin1105916774/p/12687214.html