请设计一个机械累加器,计算从 1、2... 一直累加到目标数值 target
的总和。注意这是一个只能进行加法操作的程序,不具备乘除、if-else、switch-case、for 循环、while 循环,及条件判断语句等高级功能。
示例 1:
输入: target = 5
输出: 15
示例 2:
输入: target = 7
输出: 28
提示:
1 <= target <= 10000
思路: 计算从1一直累加到target的总和的计算公式为target(target+1)/2。我们定义一个字符类型的数组,其大小为target行target+1列,利用sizeof函数计算数组大小即可得出target(target+1)的结果,再利用算术右移运算实现乘1/2操作即可得出结果。
代码实现:
class Solution {
public:
int mechanicalAccumulator(int target) {
char a[target][target + 1];
return sizeof(a) >> 1; //右移一位实现除以2操作
}
};