Website Summary Files Commits Branches @commit @diff @stats
path: root / Week06 / Exercise10.cpp
diff options
context:
space:
mode:
1 files changed, 46 insertions, 0 deletions
-rw-r--r--Week06/Exercise10.cpp46
diff --git a/Week06/Exercise10.cpp b/Week06/Exercise10.cpp
new file mode 100644
index 0000000..99049ad
--- /dev/null
+++ b/Week06/Exercise10.cpp
@@ -0,0 +1,46 @@
+#include <iostream>
+
+int main() {
+ const unsigned int SIZE = 4;
+
+ unsigned long numbers[SIZE];
+ for (int i = 0; i < SIZE; i++)
+ std::cin >> numbers[i];
+
+ unsigned long max_number = 0;
+
+ /* Това решение е ГРОЗНО!
+ * Има по-добри начини да се реализира, но тук се показва
+ * доста видно комбинаториката, т.е. как се избират индексите.
+ */
+
+ // 4 избора за първото число
+ for (int i = 0; i < SIZE; i++) {
+
+ // 3 избора за второто число
+ for (int j = 0; j < SIZE; j++) {
+ if (j == i) continue;
+
+ // 2 избора за третото число
+ for (int k = 0; k < SIZE; k++) {
+ if (k == j || k == i) continue;
+
+ // 1 избор за четвъртото число
+ for (int l = 0; l < SIZE; l++) {
+ if (l == k || l == j || l == i) continue;
+
+ unsigned long current_number = numbers[i] * 1000000000 +
+ numbers[j] * 1000000 +
+ numbers[k] * 1000 +
+ numbers[l];
+ if (current_number > max_number)
+ max_number = current_number;
+ }
+ }
+ }
+ }
+
+ std::cout << max_number << std::endl;
+
+ return 0;
+}