题目:
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;
}