Newcoder 132 B.送分题(水~)

本文探讨了一种算法,旨在通过不同的运算符组合和括号使用,最大化由三个整数构成的数学表达式的值。文章提供了详细的解决方案和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

数据结构之神cczcczccz又在出毒瘤数据结构了

神出了这样一个题:

给你三个数,在这三个数中间任意加∗*或者是+++,然后可以随便打括号,只要这个表达式合法

比如说1 2 31\ 2\ 31 2 3可以得到:

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

不能改变这三个数的原顺序

最大化表达式的值

Input

输入三行,每行一个数分别表示a,b,c(1≤a,b,c≤10)a,b,c(1\le a,b,c\le 10)a,b,c(1a,b,c10)

Output

输出一行一个数表示答案

Sample Input

1
2
3

Sample Output

9

Solution

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

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

a>1,b=c=1,ans=2aa>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+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))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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值