给一整数 n
, 我们需要求前n个自然数形成的集合的所有可能子集中所有元素的和。
样例
样例 1:
输入 : n = 2
输出 : 6
说明 :
可能的子集为 {{1}, {2}, {1, 2}}.
子集的元素和为 1 + 2 + 1 + 2 = 6
样例 2:
输入 : n = 3
输出 : 24
说明 :
可能的子集为 {{1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
子集的和为:
1 + 2 + 3 + (1 + 2) + (1 + 3) + (2 + 3) + (1 + 2 + 3) = 24
思路:
每个数字都会出现2的n-1次
class Solution {
public:
/**
* @param n: the given number
* @return: Sum of elements in subsets
*/
int subSum(int n) {
int sum = 0;
for(int i = 0; i <= n; i++) {
sum += i;
}
return sum * (int)pow(2, n - 1);
}
};