洛谷----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天倒计时,蓝桥杯省赛备赛攻略来啦~