Skip to content

Latest commit

 

History

History
45 lines (34 loc) · 1.16 KB

1056. 组合数的和.md

File metadata and controls

45 lines (34 loc) · 1.16 KB

【PAT B-1056】组合数的和

题意概述

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为 330。

输入输出格式

输入在一行中先给出 N,随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。

输出所有可能组合出来的 2 位数字的和。

数据规模

$$1<N<10$$

算法设计

可以暴力枚举所有两个数字的组合方式,然后进行加和即可,这种枚举可以通过两重循环来实现,故而暴力枚举的时间复杂度为$O\left(N^2\right)$。

C++代码

#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;
}