题目考察的知识点:位运算
题目解答方法的文字分析:两数相乘,异或可以算出两数相加,但进位是算不到的,两数相与左移就可算出是否进位;然后相加n次,求和即可
本题解析所用的编程语言:c++
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param a int整型 * @return int整型 */ int add(int a, int b) { while (b != 0) { int temp = a ^ b; b = (a & b) << 1; a = temp; } return a; } int multiply(int n, int a) { // write code here int res = 0; while (a != 0) { if ((a & 1) == 1) res = add(res, n); n <<= 1; a >>= 1; } return res; } };