上海市计算机学会竞赛平台 5月月赛 丙组

本文介绍了2023年5月上海市计算机学会竞赛丙组的比赛题目,包括三角形分类、区间最大公约数、滑雪训练、混乱的文本和最大子阵和等问题。涉及的解题策略包括角度判断、枚举、前缀和等算法,适合算法爱好者和参赛者参考。
摘要由CSDN通过智能技术生成

T1 三角形的分类

题目描述

给定三个角度 abc。请判断这三个角在平面上能组成什么样的三角形:

如果不能组成三角形,输出 Error
如果能组成等边三角形,输出 Equilateral
如果能组成等腰直角三角形,输出 Isosceles right
如果能组成等腰三角形,输出 Isosceles
如果能组成直角三角形,输出 Right
如果能组成不等边三角形,输出 Scalene

输入格式

第一行:第一个角的角度 a
第二行:第二个角的角度 b
第三行:第三个角的角度 c

输出格式

根据题目要求输出对应的文字

数据范围

1≤a,b,c≤180

样例数据

输入:
60
60
60
输出:
Equilateral

分析

这题虽然直接可以用if语句套嵌,但这题给你的描述正好是把三角形的所有可能性从小到大给你了,否则还要考虑会不会出现如:把等腰直角三角形输成等腰或直角三角形的情况。

代码

#include <bits/stdc++.h>
using namespace std;

int a, b, c;

int main(){
   
	cin >> a >> b >> c;
	if (a < b) swap(a, b);
	if (b < c) swap(b, c);
	if (a < b) swap(a, b);
	//将abc从大到小排序,方便判断
	if (a + b + c != 180) printf("Error");
	else if (a == 60 && b == 60 && c == 60)
		printf("Equilateral");
	else if (a == 90 && b == c)
		printf("Isosceles right");
	else if (a == b || a == c || b == c)
		printf("Isosceles");
	else if (a == 90)
		printf("Right");
	else
		printf("Scalene");
	return 0;
}

T2 区间最大公约数

题目描述

给定两个正整数L,R,你可以任意选择两个正整数x,y且满足L≤x<y≤R,并求出x,y的最大公约数。请问在所有选法中,x,y最大公约数的最大值为多少?

输入格式

输入共一行,两个正整数表示L,R

输出格式

输出共一个整数,表示所求答案

数据范围

对于30%的数据,1≤L<R≤100
对于60%的数据,1≤L<R≤ 1 0 3 10^3 103
对于100%的数据,1≤L<R≤ 5 × 1 0 5 5×10^5 5×105

样例数据

输入:

23 29

输出:

4

说明:

选(24,28)时,取到最大值为 4

输入:

32768 32769

输出:

1

分析

已知,对于两个数 a × c 和 a × ( c − 1 ) a\times c和a \times (c-1) a×ca×(c1),其中a一定是他们两个数的公因数,所以如果 a × c 和 a × ( c − 1 ) a\times c和a \times (c-1) a×ca×(c1)在l~r之间,那么a就是其中的公因数,那么我们就可以枚举所有可能解了

代码

#include <bits/stdc++.h>
using namespace std;

int l, r, ans = 1;

int main(){
   
	cin >> l >> r;
	for (int i = 2; i <= r; i++){
   
		int x = r / i * i;
		if (x - i >= l) ans = i;
	}
	cout << ans << endl;
	return 0;
}

T3 滑雪训练

题目描述

小爱最近迷上了滑雪,某滑雪场有 n n n 条不同难度的雪道,只有学习并滑了第 i i i 条雪道,才能去参加第 i + 1 i+1 i+1 条雪道的学习与训练。

已知,第一次滑第 i i i 条雪道时,需要先进行 a i a_i ai分钟的学习,再花 b i b_i bi分钟滑该雪道一次,才算学习完成。若之后再滑第 i i i 条雪道,则仅需 b i b_i b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值