洛谷----P2415 集合求和
题目描述
给定一个集合s(集合元素数量<=30),求出此集合所有子集元素之和。
输入格式
集合中的元素(元素<=1000)
输出格式
和
输入输出样例
输入 #1复制
2 3
输出 #1复制
10
说明/提示
子集为:
[] [2] [3] [2 3] 2+3+2+3=10
保证结果在10^18以内。
思路:找规律,发现每个数字出现的次数与元素的个数有关,3个元素每个元素出现4次,4个元素每个元素出现8次-------》推出每个元素出现次数与元素个数的关系为2的n-1次方(n为元素个数)。
#include <iostream>
#include <math.h>
#include <algorithm>
#include <stack>
#include <string.h>
#include <vector>
#include <cstring>
using namespace std;
long long n,m=0,sum=0;
int a[1005];
int main() {
while(scanf("%d",&n)!=EOF)
{
a[m++]=n;
}
//cout<<m<<endl;
for(int i=0;i<m;i++)
{
sum+=(a[i]*pow(2,m-1));
}
cout<<sum<<endl;
return 0;
}
//1
//2
//3
//4
//1 2
//1 3
//1 4
//2 3
//2 4
//3 4
//1 2 3
//1 2 4
//1 3 4
//2 3 4
//1 2 3 4
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
