问题 A: 送分题
题目描述
神出了这样一个题:
给你三个数,在这三个数中间任意加*或者是+,然后可以随便打括号,只要这个表达式合法
比如说1 2 3可以得到:
1+2×3=7
1×(2+3)=5
1×2×3=6
(1+2)×3=9
不能改变这三个数的原顺序
最大化表达式的值
输入
输入三行,每行一个数
分别表示a,b,c
1 <= a , b , c <= 100
输出
一行一个数表示答案
样例输入
1 2 3
2 10 3
样例输出
9
60
#include <stdio.h>
int main(void){
int max(int x,int y);//声明max函数
int a,b,c,d;
while(~scanf("%d %d %d",&a,&b,&c)){
d=max(a+b+c,a*b*c);
d=max(d,a+b*c);
d=max(d,a*b+c);
d=max(d,(a+b)*c);
d=max(d,a*(b+c));
//可知三个数字用括号,乘号还有加号可以有六种组合
//利用函数max得到六个表达式其中最大的表达式的值
printf("%d\n",d);
}
return 0;
}
//用到了max函数,所以要定义max函数
int max(int x,int y){
if(x>y){
return x;
}
else{
return y;
}
}
AC代码如上。(如有错误,欢迎指正)