PAT 乙级 1056.组合数的和 C++/Java

题目来源

给定 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

 

C++实现:

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 //1056:组合数的和
 5 int main() {
 6     int n;
 7     cin >> n;
 8     vector<int> arr(n);
 9     for (int i = 0; i < n; i++) {
10         cin >> arr[i];
11     }
12     int sum = 0;
13     for (int i = 0; i < n; i++) {
14         for (int j = 0; j < n; j++) {
15             if (i != j) {
16                 sum += arr[i] * 10 + arr[j];
17             }
18         }
19     }
20     cout << sum;
21     return 0;
22 }

 

Java实现:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner input = new Scanner(System.in);
 6         int n = input.nextInt();
 7         int[] num = new int[n];
 8         for (int i = 0; i < n; i++) {
 9             num[i] = input.nextInt();
10         }
11         input.close();
12         int result = 0;
13         for (int i = 0; i < n; i++) {
14             if (num[i] == 0) {
15                 break;
16             }
17             for (int j = 0; j < n; j++) {
18                 if (j != i) {
19                     result += num[i] * 10 + num[j];
20                 }
21             }
22         }
23         System.out.print(result);
24     }
25 }

 

posted @ 2021-04-17 16:34  47的菠萝~  阅读(49)  评论(0编辑  收藏  举报