和快速幂类似。思想是把乘法转换成加法。
详见代码。
#include <iostream>
using namespace std;
int multi(int a, int b) {
int res = 0;//最终值
while(b) {
if(b & 1) res += a;//若当前位为1,就相加
a <<= 1;//扩大二倍
b >>= 1;//右移一位
}
return res;
}
int main() {
int x, y;
cin >> x >> y;
cout << multi(x, y);
return 0;
}