牛客刷题记录之语法入门选择结构篇

(一)N-送分题


题目描述

数据结构之神ccz又在出毒瘤数据结构了,神出了这样一个题:

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

比如说1 2 3可以得到:

  • 1+2*3=7
  • 1*(2+3)=5
  • 1*2*3=6
  • (1+2)*3=9

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

最大化表达式的值

输入描述:

输入三行,每行一个数

分别表示a,b,c

输出描述:

输出一行一个数表示答案

输入示例:

1
2
3

输出示例:

9

输入示例:

2
10
3

输出示例:

60

思路:分成三种情况。

第一种:三个数没有1,两两相乘最大;

第二种:只有一个1,则比较(1+其中一个数)*剩下的那个数,取两种情况下最大的;

第三种:第一个数和最后一个数都为1,三个数相加的情况最大。

代码:

#include
int max(int a,int b){
	int c=a;
	if (b>a){
		c=b;
	}
	return c;
}
int main(){
	int a,b,c,sum;
	scanf("%d\n%d\n%d",&a,&b,&c);
	if (a==1&&c==1){
		sum=a+b+c;
	}
	else if(a==1||b==1||c==1){
		sum=max((a+b)*c,a*(b+c));
	}
    else{
        sum=a*b*c;
    }
	printf("%d",sum);
    return 0;
}

(二)U-可编程拖拉机比赛


题目描述

“这个比赛,归根结底就是控制一个虚拟的小拖拉机跑完整个赛道。一般一场比赛会有 9 个到 13 个赛道,最后看能跑完多少个赛道。”
通常在一场可编程拖拉机比赛中,分别会有实际参赛队伍数 10%、20%、30% 向下取整的队伍获得金、银、铜牌,其余队伍获得荣誉提名,俗称“铁牌”。
但是主办方往往会多准备一些奖牌,那么在发奖牌的时候会按照比例向上取整发出的奖牌以减少浪费,就会有一些原本获得银牌的队伍获得了金牌。
现在给出一个赛区的规模,也就是这个赛区的实际参赛队伍数,小 Q 同学想知道有多少队伍的奖牌会由银变金、由铜变银、由铁变铜。
 

输入描述:

输入只有一行,包含一个整数 n (10 <= n <= 1000),表示实际参赛队伍数。

输出描述:

输出一行,包含三个由空格分隔的整数,分别表示奖牌会由银变金、由铜变银、由铁变铜的队伍数。

你可能感兴趣的:(蓝桥杯,c语言,c++)