http://codeforces.com/contest/479/problem/A
Petya studies in a school and he adores Maths. His class has been studying arithmetic expressions. On the last class the teacher wrote three positive integers a, b, c on the blackboard. The task was to insert signs of operations '+' and '*', and probably brackets between the numbers so that the value of the resulting expression is as large as possible. Let's consider an example: assume that the teacher wrote numbers 1, 2 and 3 on the blackboard. Here are some ways of placing signs and brackets:
- 1+2*3=7
- 1*(2+3)=5
- 1*2*3=6
- (1+2)*3=9
Note that you can insert operation signs only between a and b, and between b and c, that is, you cannot swap integers. For instance, in the given sample you cannot get expression (1+3)*2.
It's easy to see that the maximum value that you can obtain is 9.
Your task is: given a, b and c print the maximum value that you can get.
The input contains three integers a, b and c, each on a single line (1 ≤ a, b, c ≤ 10).
Print the maximum value of the expression that you can obtain.
1
2
3
9
2
10
3
60
解题思路:求出a,b,c之间加上+或者*号之后表达式的最大值,可以加上括号,所以直接暴力
2
3 int main()
4 {
5
6 int a,b,c, sum;
7 int max;
8 while(scanf("%d%d%d",&a,&b, & c) != EOF){
9 max = -1;
10 sum = a + b * c;
11 max = max > sum ? max : sum;
12 sum = (a + b) * c;
13 max = max > sum ? max : sum;
14 sum = a * b + c;
15 max = max > sum ? max : sum;
16 sum = a * (b +c);
17 max = max > sum ? max : sum;
18 sum = a + b + c;
19 max = max > sum ? max : sum;
20 sum = a * b * c;
21 max = max > sum ? max : sum;
22 printf("%d ", max);
23 }
24 return 0;
25 }