#include <iostream>
using namespace std;
int goal;
int closest;
bool found;
void merge(int tmp[], int n) {
if(found) {
return;
}
if(tmp[0] <= goal && (closest < tmp[0] || closest == 1001)) {
closest = tmp[0];
if(closest == goal) {
found = true;
return;
}
}
if(n == 1) {
return;
}
for(int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
int smaller[n];
int count = 1;
for(int k = 0; k < n; k++) {
if(k == i || k == j) continue;
smaller[count++] = tmp[k];
}
smaller[0] = tmp[i] + tmp[j];
merge(smaller, n-1);
smaller[0] = tmp[i] - tmp[j];
merge(smaller, n-1);
smaller[0] = tmp[j] - tmp[i];
merge(smaller, n-1);
smaller[0] = tmp[i] * tmp[j];
merge(smaller, n-1);
if(tmp[j] != 0 && tmp[i]%tmp[j] == 0) {
smaller[0] = tmp[i] / tmp[j];
merge(smaller, n-1);
}
if(tmp[i] != 0 && tmp[j]%tmp[i] == 0) {
smaller[0] = tmp[j] / tmp[i];
merge(smaller, n-1);
}
}
}
}
int main() {
int cases;
cin >> cases;
while(cases--) {
int ele[5];
for(int i = 0; i < 5; i++) {
cin >> ele[i];
}
cin >> goal;
closest = 1001;
found = false;
merge(ele, 5);
cout << closest << endl;
}
return 0;
}
1050. Numbers & Letters
最新推荐文章于 2024-07-22 17:06:26 发布