P2415 集合求和 题解
题目:
集合求和
题目描述
给定一个集合 s s s(集合元素数量 ≤ 30 \le 30 ≤30),求出此集合所有子集元素之和。
输入格式
集合中的元素(元素 ≤ 1000 \le 1000 ≤1000)
输出格式
s s s 所有子集元素之和。
样例 #1
样例输入 #1
2 3
样例输出 #1
10
提示
【样例解释】
子集为: ∅ , { 2 } , { 3 } , { 2 , 3 } \varnothing, \{ 2 \}, \{ 3 \}, \{ 2, 3 \} ∅,{2},{3},{2,3},和为 2 + 3 + 2 + 3 = 10 2 + 3 + 2 + 3 = 10 2+3+2+3=10。
【数据范围】
对于 100 % 100 \% 100% 的数据, 1 ≤ ∣ s ∣ ≤ 30 1 \le \lvert s \rvert \le 30 1≤∣s∣≤30, 1 ≤ s i ≤ 1000 1 \le s_i \le 1000 1≤si≤1000, s s s 所有子集元素之和 ≤ 10 18 \le {10}^{18} ≤1018。
题解:
Code:
#include<iostream>
#include<cmath>
using namespace std;
int k[101],i=0;
long long sum=0;
int main()
{
while(cin>>k[i++]);
for(int j=0;j<i;j++)
sum+=k[j];
sum*=pow(2,i-2);
cout<<sum;
return 0;
}