洛谷 P2415 集合求和 C语言
题目:
https://www.luogu.com.cn/problem/P2415
思路从大佬学来的思路。
如图:
我们可以发现,集合最后出现过的数字是2的(n-1)次方,所以就很好计算了。
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main() {
int num[31];
ll S = 0;
int cnt = 0;
while (cnt < 30 && cin >> num[cnt])
{
cnt++;
}
ll powtwo = pow(2,cnt-1);
for (int i = 0; i < cnt; i++)
{
S = S + num[i] * powtwo;
}
cout << S << endl;
return 0;
}