1. 递增数列加法转乘法,除2转位移
  2. 结合二进制位运算用加法来实现两数相乘(与十进制乘法转加法类似)

class Solution {
public:
	int multi(int a, int b)
	{
		int ret = 0;
		(a & 1) && (ret += b);
		a >>= 1;
		b <<= 1;
		a && (ret += multi(a, b));
		return ret;
	}
	
    int Sum_Solution(int n) {
        return multi(n, 1 + n) >> 1;
    }
};

int main()
{
	Solution s;
	cout << s.Sum_Solution(5) << endl;
	return 0;
}