1. 程式人生 > >Newcoder 132 B.送分題(水~)

Newcoder 132 B.送分題(水~)

Description

資料結構之神cczccz又在出毒瘤資料結構了

神出了這樣一個題:

給你三個數,在這三個數中間任意加*或者是++,然後可以隨便打括號,只要這個表示式合法

比如說1231\ 2\ 3可以得到:

1+23=71+2*3=7 1(2+3)=51*(2+3)=5 123=61*2*3=6 $ (1+2)*3=9$

不能改變這三個數的原順序

最大化表示式的值

Input

輸入三行,每行一個數分別表示a,b,c(1a,b,c10)a,b,c(1\le a,b,c\le 10)

Output

輸出一行一個數表示答案

Sample Input

1 2 3

Sample Output

9

Solution

a=b=c=1,ans=3a=b=c=1,ans=3

a=b=1,c>1,ans=2ca=b=1,c>1,ans=2c

a>1,b=c=1,ans=2aa>1,b=c=1,ans=2a

a=c=1,b>1,ans=b+2a=c=1,b>1,ans=b+2

else,ans=max((a+b)c,a(b+c))else,ans=max((a+b)c,a(b+c))

Code

#include<cstdio>
#include<algorithm>
using namespace std;
int a,b,c;
int main()
{
	while(~scanf("%d%d%d",&a,&b,&c))
	{
		if(a==1&&b==1&c==1)printf("3\n");
		else if(a>1&&b>1&&c>1)printf("%d\n",a*b*c);
		else if(a==1&&b==1||b==1&&c==1)printf("%d\n",2*b);
		else if(a==1&&c==1)printf("%d\n",b+2);
		else printf("%d\n",max((a+b)*c,a*(b+c)));
	}
	return 0;
}