五个数AB*CDE乘积最小

852 词

题目描述

输入5个个位数 ABCDE(至少2个非0),要求按组合出一个三位数和2位数,使得乘积最小,你的任务是输出这个乘积

样例输入

1
1 2 3 4 5

样例输出

1
3185

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <algorithm>
using namespace std;
int num[5];
int datas[120];
void cal();

int main() {
scanf("%d%d%d%d%d", &num[0], &num[1], &num[2], &num[3], &num[4]);
cal();
}

void cal() {
int num3, num2;
int index = -1;
for (int i = 0; i < 5; ++i)
for (int j = 0; j < 5; ++j)
for (int k = 0; k < 5; ++k)
for (int l = 0; l < 5; ++l)
for (int m = 0; m < 5; ++m)
if (i != j && i != k && i != l && i != m && j != k && j != l && j != m && k != l && k != m &&
l != m) {
num3 = num[i] * 100 + num[j] * 10 + num[k];
num2 = num[l] * 10 + num[m];
if (num2 >= 10 && num3 >= 100)
datas[++index] = num3 * num2;
else datas[++index] = 99999;
}
sort(&datas[0], &datas[120]);
cout << datas[0];
}