计算2^35方法
第一种web
ll sum = 1; for(int i = 1; i <= 35; i++) { sum *= 2; } //计算了35次,不够快
快速幂的方法
把235 = 232+2+1
用到位运算 35 = 100011
咱们这样写代码svg
ll quickmi(int a, int b) //a的b次方 { ll ans = 1; while(b) { if(b&1)//当末位为1时才运算 ans *= a; a *= a; b >>= 1; } } //计算了6次
下面看看运算过程,就很明白了
b = 100011;
ans = 1;
a = 2;ui
ans = 2;
a = 22;
b = 10001;spa
ans = 21+2;
a = 24;
b = 1000;code
ans = 21+2;
a = 28;
b = 100;xml
ans = 21+2;
a = 216;
b = 10;token
ans = 21+2;
a = 232;
b = 1;
最后一次while(b)
ans = 21+2+32;
a = 264;
b = 0;
取模快速幂it
int quickmod(int a, int b, int c) { int ans = 1; a %= c;//防止后面爆int while(b) { if(b&1) ans = (ans*a) % c; a = (a*a) % c; b >>= 1; } return ans; }