题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
1+2+...+n = n(n+1)/2,题目要求不能用乘法,但可以使用sizeof求布尔型(占一个字节)二维数组a[n][n+1]来求n(n+1),然后使用右移一位实现除2。代码如下:
class Solution {
public:
int Sum_Solution(int n) {
bool a[n][n+1];
return sizeof(a)>>1;
}
};
由于使用变量定义了数组长度,该代码不是所有编译器都可以成功编译(gcc可以,vs不能)。