洛谷笔记 - P2415 集合求和

有一说一,数学不好发现不出来规律的,拿到这道题确实会很棘手。

比如我自己

兄弟会背叛你,女人会离开你,金钱会诱惑你,生活会刁难你,只有数学不会,不会就是不会,怎么学都不会。 —— Karry5307

题目描述

给定一个集合 $s$(集合元素数量 $\le 30$),求出此集合所有子集元素之和。

输入格式

集合中的元素(元素 $\le 1000$)

输出格式

$s$ 所有子集元素之和。

样例 #1

样例输入 #1

2 3

样例输出 #1

10

提示

【样例解释】

子集为:$\varnothing, \{ 2 \}, \{ 3 \}, \{ 2, 3 \}$,和为 $2 + 3 + 2 + 3 = 10$。


【数据范围】

对于 $100 \%$ 的数据,$1 \le \lvert s \rvert \le 30$,$1 \le s_i \le 1000$,$s$ 所有子集元素之和 $\le {10}^{18}$。

代码部分(吐槽注意)

//P2415 集合求和
//https://www.luogu.com.cn/problem/P2415

//https://www.luogu.com.cn/record/87862669
//https://www.luogu.com.cn/record/87862695

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int n=0,h=0,tmp;
    while(cin>>tmp){
        h+=tmp;
        n++;
    }
    long long int ans=h*pow(2,n-1); //这一行必须指定
    cout<<ans<<endl; //上面那行不指定变量而直接用cout输出会喜提科学计数法输出结果一行
    //printf("%lld\n",ans); //而在printf里试图直接输出h*pow(2,n-1)则会喜提249644974080变4777492371896008704的绝佳答案
    //c++,很神奇吧
    return 0;
}
Just Programming With ♥️ & Peace
使用 Hugo 构建
主题 StackJimmy 设计