题目链接:Expression
Expression
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
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:
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.
Input
The input contains three integers a, b and c, each on a single line (1?≤?a,?b,?c?≤?10).
Output
Print the maximum value of the expression that you can obtain.
Sample test(s)
input
123
output
input
2103
output
60
大致题意:a, b, c三个数,在三个数中,插入“+” 和“*”运算符的任意两个组合,求能组成的表达式的值得最大值。(可以用括号)
解题思路:没啥说的,直接暴力,总共就6种组合。
AC代码:
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define INF 0x7fffffffint x[9];int main(){// #ifdef sxk// freopen("in.txt","r",stdin);// #endif int a,b,c; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { x[0] = a + b + c; x[1] = a + (b * c); x[2] = a * (b + c); x[3] = (a + b) * c; x[4] = (a * b) + c; x[5] = a * b * c; sort(x, x+6); printf("%d\n",x[5]); } return 0;}</time.h></stdlib.h></math.h></string></map></set></queue></vector></algorithm></iostream></string.h></stdio.h>