1056 组合数的和 (15 分)
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出所有可能组合出来的2位数字的和。
3 2 8 5
330
【我的代码】
1 // 1056 组合数的和 (15 分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
2 //
3
4 #include <iostream>
5 #include <vector>
6 using namespace std;
7 int main()
8 {
9 vector<int> a;
10 int N, tmp;
11 cin >> N;
12 int i = 0, res = 0;
13 for (; i < N; i++) {
14 cin >> tmp;
15 a.push_back(tmp);
16 }
17 for (i = 0; i < N; i++) {
18 int temp = a[i];
19 for (int j = 0; j < N; j++) {
20 if (j != i)
21 res += temp * 10 + a[j];
22 }
23 }
24 cout << res;
25 return 0;
26 }
【思路】
没有什么难点,就是一个组合逻辑而已,形成两位数就是a[i] * 10 + a[j]。