给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为 330。
输入在一行中先给出 N,随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出所有可能组合出来的 2 位数字的和。
可以暴力枚举所有两个数字的组合方式,然后进行加和即可,这种枚举可以通过两重循环来实现,故而暴力枚举的时间复杂度为$O\left(N^2\right)$。
#include <bits/stdc++.h>
using namespace std;
using gg = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
gg ni;
cin >> ni;
gg ans = 0;
vector<gg> ai(ni);
for (gg& i : ai) {
cin >> i;
}
for (gg i = 0; i < ni; ++i) {
for (gg j = i + 1; j < ni; ++j) {
ans += ai[i] * 10 + ai[j] + ai[j] * 10 + ai[i];
}
}
cout << ans;
return 0;
}