【蓝桥杯2025备赛】集合求和

集合求和

题目描述

给定一个集合 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。

标签:集合论,数学,排列组合

知识点:

  • 集合所有子集中的每个元素个数总和是相等的

  • 集合所有子集之和= s u m ∗ 2 n − 1 sum*2^{n-1} sum∗2n−1(n代表元素的个数,sum是元素的和)

思路

我们先模拟一下,求集合所有子集之和的过程

以A= { 1 , 2 , 3 , 4 } \left\{1,2,3,4\right\} {1,2,3,4}为例

  • 0 元子集 : 0元子集: 0元子集: ∅ \varnothing ∅

  • 1 元子集 : { 1 } 1元子集:\left\{1\right\} 1元子集:{1} { 2 } \left\{2\right\} {2} { 3 } \left\{3\right\} {3} { 4 } \left\{4\right\} {4}

  • 2 元子集 2元子集 2元子集: { 1 , 2 } \left\{1,2\right\} {1,2} { 1 , 3 } \left\{1,3\right\} {1,3} { 1 , 4 } \left\{1,4\right\} {1,4} { 2 , 3 } \left\{2,3\right\} {2,3} { 2 , 4 } \left\{2,4\right\} {2,4} { 3 , 4 } \left\{3,4\right\} {3,4}

  • 3 元子集 : 3元子集: 3元子集: { 1 , 2 , 3 } \left\{1,2,3\right\} {1,2,3} { 1 , 2 , 4 } \left\{1,2,4\right\} {1,2,4} { 1 , 3 , 4 } \left\{1,3,4\right\} {1,3,4} { 2 , 3 , 4 } \left\{2,3,4\right\} {2,3,4}

  • 4 元子集 : 4元子集: 4元子集: { 1 , 2 , 3 , 4 } \left\{1,2,3,4\right\} {1,2,3,4}

我们仔细观察一下所有的集合,我们可以发现1出现的次数和2,3,4出现的次数是相等的,出现了八次

我们可以猜想在集合所有子集中每个元素出现次数为 2 n − 1 2^{n-1} 2n−1次,集合A中所有元素之和为sum

所有子集之和 = 所有子集之和= 所有子集之和= s u m ∗ 2 n − 1 sum*2^{n-1} sum∗2n−1​

下面是我朴素的推理过程,不保证对,发现不对之处还望指出,万分感谢!!!

ok,那就直接上代码了

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
int a[1005];
int ans,sum;
signed main()
{
    int s;
    while(scanf("%lld",&s)!=-1)
    {
        if(a[s]==0){ans+=s;sum++;}
    }
    ans*=pow(2,sum-1);
    printf("%lld",ans);
    return 0;
}

我们下期再见!!!

相关推荐
√尖尖角↑4 小时前
力扣——【1991. 找到数组的中间位置】
算法·蓝桥杯
Allen Wurlitzer4 小时前
算法刷题记录——LeetCode篇(1.8) [第71~80题](持续更新)
算法·leetcode·职场和发展
菜鸡中的奋斗鸡→挣扎鸡8 小时前
第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
c语言·c++·蓝桥杯
lzb75910 小时前
第16届蓝桥杯单片机模拟试题Ⅰ
单片机·蓝桥杯
triticale10 小时前
【蓝桥杯】统计子矩阵
职场和发展·矩阵·蓝桥杯
杰杰批11 小时前
第十四届蓝桥杯大赛软件赛国赛C/C++研究生组
c语言·c++·蓝桥杯
aaaweiaaaaaa11 小时前
蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)
c语言·数据结构·c++·算法·贪心算法·蓝桥杯·动态规划
亓才孓12 小时前
[leetcode]01背包问题
算法·leetcode·职场和发展
its_a_win13 小时前
蓝桥杯 2023省B 飞机降落 dfs
c++·算法·蓝桥杯
即安莉14 小时前
(自用)蓝桥杯准备(需要写的基础)
蓝桥杯