Tuyên bố vấn đề
Cho ba số nguyên khác không a, b và c. Nhiệm vụ là tìm giá trị lớn nhất có thể bằng cách đặt các dấu cộng và nhân giữa chúng theo thứ tự bất kỳ.
Xin lưu ý rằng việc sắp xếp lại các số nguyên được phép nhưng phải sử dụng dấu cộng và phép nhân một lần.
Nếu a =1, b =3 và c =5 thì giá trị lớn nhất sẽ là 20 như sau−
(1 + 3) * 5 = 20
Thuật toán
1. If all numbers are positive, then add two small numbers and multiply result with larger one 2. If only two numbers are positive, then multiply 2 positive numbers and add remaining number 3. If only one number is positive, then multiply 2 negative number and add remaining number 4. If all numbers are negative, then add two largest integers and multiply then with remaining number
Ví dụ
#include <bits/stdc++.h> using namespace std; int getMaximumResult(int a, int b, int c){ int negativeCnt = 0; int sum = a + b + c; int mul = a * b * c; int largest = max(a, max(b, c)); int smallest = min(a, min(b, c)); if (a < 0) { ++negativeCnt; } if (b < 0) { ++negativeCnt; } if (c < 0) { ++negativeCnt; } if (negativeCnt == 0) { return (sum - largest) * largest; } else if (negativeCnt == 1) { return (mul / smallest) + smallest; } else if (negativeCnt == 2) { return (mul / largest) + largest; } else if (negativeCnt == 3) { return (sum - smallest) * smallest; } } int main(){ int a = 1, b = 3, c = 5; cout << "Maximum value = " << getMaximumResult(a, b, c) << endl; return 0; }
Đầu ra
Khi bạn biên dịch và thực thi chương trình trên. Nó tạo ra kết quả sau−
Maximum value = 20