【GPLT】【2021天梯赛真题题解】【231分】

本文汇总了多个编程竞赛中的题目,包括题目描述、分析和解题代码,涉及递归、字符串操作、栈和队列、数组排序、模拟等多种算法和技巧。通过这些题目,展示了在实际编程竞赛中如何解决各种复杂问题。


L1-1 人与神 (5 分)

题目描述

跨界大神 L. Peter Deutsch 有一句名言:“To iterate is human, to recurse divine.”(迭代的是人,递归的是神)。本题就请你直接在屏幕上输出这句话。

输入格式:
本题没有输入。

输出格式:
在一行中输出 To iterate is human, to recurse divine.。

输入样例:
无
输出样例:
To iterate is human, to recurse divine.

题目分析

输 出 语 句 不 解 释 \color{#48D1CC}{输出语句不解释}

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

int main(){
   
   
	cout<<"To iterate is human, to recurse divine.\n";
	return 0;
} 

L1-2 两小时学完C语言 (5 分)

题目描述

知乎上有个宝宝问:“两个小时内如何学完 C 语言?”当然,问的是“学完”并不是“学会”。

假设一本 C 语言教科书有 N 个字,这个宝宝每分钟能看 K 个字,看了 M 分钟。还剩多少字没有看?

输入格式:
输入在一行中给出 3 个正整数,分别是 N(不超过 400 000),教科书的总字数;K(不超过 3 000),是宝宝每分钟能看的字数;M(不超过 120),是宝宝看书的分钟数。

题目保证宝宝看完的字数不超过 N。

输出格式:
在一行中输出宝宝还没有看的字数。

输入样例:
100000 1000 72
输出样例:
28000

题目分析

模 拟 题 意 + 算 数 \color{#48D1CC}{模拟题意+算数} +

#include<bits/stdc++.h>
using namespace std;
void solve(){
   
   
	int n,k,m;
	cin>>n>>k>>m;
	cout<<n-k*m;
}
int main(){
   
   
	solve();
	return 0;
} 

L1-3 强迫症 (10 分)

题目描述

小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。

输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。

输出格式:
在一行中按标准格式 年年年年-月月 将输入的信息整理输出。

输入样例 19808
输出样例 11998-08
输入样例 20510
输出样例 22005-10
输入样例 3196711
输出样例 31967-11

题目分析

模 拟 题 意 + 分 类 讨 论 + 字 符 串 分 解 \color{#48D1CC}{模拟题意+分类讨论+字符串分解} ++

#include<bits/stdc++.h>
using namespace std;
void solve(){
   
   
	string s,s1,s2;
	int n,y;
	cin>>s;
	if(s.size()==4){
   
   
		s1=s.substr(0,2);
		s2=s.substr(2,2);
		n=stoi(s1);
		y=stoi(s2);
		if(n>=22){
   
   
			n+=1900;
		}else n+=2000;
	}else{
   
   
		s1=s.substr(0,4);
		s2=s.substr(4,2);
		n=stoi(s1);
		y=stoi(s2);
	}
	cout<<n<<"-";
	printf("%02d",y); 
}

int main(){
   
   
	solve();
	return 0;
} 

L1-4 降价提醒机器人 (10 分)

题目描述

小 T 想买一个玩具很久了,但价格有些高,他打算等便宜些再买。但天天盯着购物网站很麻烦,请你帮小 T 写一个降价提醒机器人,当玩具的当前价格比他设定的价格便宜时发出提醒。

输入格式:
输入第一行是两个正整数 N N N M ( 1 ≤ N ≤ 100 , 0 ≤ M ≤ 1000 ) M (1≤N≤100,0≤M≤1000) M(1N100,0M1000),表示有 N N N 条价格记录,小 T T T 设置的价格为 M M M

接下来 N 行,每行有一个实数 P i ( − 1000.0 < P i < 1000.0 ) P_i(−1000.0<P_i<1000.0) Pi1000.0<Pi<1000.0,表示一条价格记录。

输出格式:
对每一条比设定价格 M 便宜的价格记录 P,在一行中输出 On Sale! P,其中 P 输出到小数点后 1 位。

输入样例:
4 99
98.0
97.0
100.2
98.9
输出样例:
On Sale! 98.0
On Sale! 97.0
On Sale! 98.9

题目分析

判 断 语 句 \color{#48D1CC}{判断语句}

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

void solve(){
   
   
	int n,m;
	cin>>n>>m;
	while(n--){
   
   
		double a;
		cin>>a;
		if(a<m){
   
   
			cout<<"On Sale! ";
			printf("%.1lf\n",a);
		}
	}
}
int main(){
   
   
	solve();
	return 0;
} 

L1-5 大笨钟的心情 (15 分)

题目描述

有网友问:未来还会有更多大笨钟题吗?笨钟回复说:看心情……

本题就请你替大笨钟写一个程序,根据心情自动输出回答。

输入格式:
输入在一行中给出 24 个 [0, 100] 区间内的整数,依次代表大笨钟在一天 24 小时中,每个小时的心情指数。

随后若干行,每行给出一个 [0, 23] 之间的整数,代表网友询问笨钟这个问题的时间点。当出现非法的时间点时,表示输入结束,这个非法输入不要处理。题目保证至少有 1 次询问。

输出格式:
对每一次提问,如果当时笨钟的心情指数大于 50,就在一行中输出 心情指数 Yes,否则输出 心情指数 No

输入样例:
80 75 60 50 20 20 20 20 55 62 66 51 42 33 47 58 67 52 41 20 35 49 50 63
17
7
3
15
-1
输出样例:
52 Yes
20 No
50 No
58 Yes

题目分析

模 拟 题 意 \color{#48D1CC}{模拟题意}

#include<bits/stdc++.h>
using namespace std;
void solve(){
   
   
	int a[30]={
   
   0};
	for(int i=0;i<24;i++){
   
   
		cin>>a[i];
	}
	int aa;
	while(1){
   
   
        cin>>aa;
        if(aa==-1||aa>23||aa<0)break;
		cout<<a[aa]<<" ";
		if(a[aa]>50)cout<<"Yes\n";
		else cout<<"No\n";
    }
} 
int main(){
   
   
	solve();
	return 0;
} 

L1-6 吉老师的回归 (15 分)

题目描述

曾经在天梯赛大杀四方的吉老师决定回归天梯赛赛场啦!

为了简化题目,我们不妨假设天梯赛的每道题目可以用一个不超过 500 的、只包括可打印符号的字符串描述出来,如:Problem A: Print "Hello world!"

众所周知,吉老师的竞赛水平非常高超,你可以认为他每道题目都会做(事实上也是……)。因此,吉老师会按照顺序看题并做题。但吉老师水平太高了,所以签到题他就懒得做了(浪费时间),具体来说,假如题目的字符串里有 qiandao 或者 easy(区分大小写)的话,吉老师看完题目就会跳过这道题目不做。

现在给定这次天梯赛总共有几道题目以及吉老师已经做完了几道题目,请你告诉大家吉老师现在正在做哪个题,或者吉老师已经把所有他打算做的题目做完了。

提醒:天梯赛有分数升级的规则,如果不做签到题可能导致团队总分不足以升级,一般的选手请千万不要学习吉老师的酷炫行为!

输入格式:
输入第一行是两个正整数 N , M ( 1 ≤ M ≤ N ≤ 30 ) N,M (1≤M≤N≤30) N,M(1MN30),表示本次天梯赛有 N N N 道题目,吉老师现在做完了 M M M 道。

接下来 N N N 行,每行是一个符合题目描述的字符串,表示天梯赛的题目内容。吉老师会按照给出的顺序看题——第一行就是吉老师看的第一道题,第二行就是第二道,以此类推。

输出格式:
在一行中输出吉老师当前正在做的题目对应的题面(即做完了 M M M 道题目后,吉老师正在做哪个题)。如果吉老师已经把所有他打算做的题目做完了,输出一行 Wo AK le

输入样例 15 1
L1-1 is a qiandao problem.
L1-2 is so...easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so easy.
输出样例 1:
L1-4 is qianDao.

输入样例 25 4
L1-1 is a-qiandao problem.
L1-2 is so easy.
L1-3 is Easy.
L1-4 is qianDao.
Wow, such L1-5, so!!easy.
输出样例 2:
Wo AK le

题目分析

字 符 串 操 作 + s t r i n g + 模 拟 题 意 \color{#48D1CC}{字符串操作+string+模拟题意} +string+

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

void solve(){
   
   
	int n,m;
	cin>>n>>m;
	getchar();
	string s;
	int cnt=0,num=1;
	for(int i=0;i<n;i++){
   
   
		getline(cin,s);
		if(s.find("qiandao")==-1&&s.find("easy")==-1){
   
   
			cnt++;
		}
		if(cnt>m&&num){
   
   
			cout<<s<<endl;
			num=0;
		}
	} 
	if(cnt<=m&&num)
		cout<<"Wo AK le\n";
}
int main(){
   
   
	solve();
	return 0;
} 

L1-7 天梯赛的善良 (20 分)

题目描述

天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分。

于是命题组首先将编程能力划分成了 1 0 6 10^6 106个等级(太疯狂了,这是假的),然后调查了每个参赛学生的编程能力。现在请你写个程序找出所有参赛学生的最小和最大能力值,给命题组作为出题的参考。

输入格式:
输入在第一行中给出一个正整数 N ( ≤ 2 × 1 0 4 ) N(≤2×10^ 4 ) N2×104,即参赛学生的总数。随后一行给出 N N N 个不超过 1 0 6 10^6 106 的正整数,是参赛学生的能力值。

输出格式:
第一行输出所有参赛学生的最小能力值,以及具有这个能力值的学生人数。第二行输出所有参赛学生的最大能力值,以及具有这个能力值的学生人数。同行数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:
10
86 75 233 888 666 75 886 888 75 666
输出样例:
75 3
888 2

题目分析

数 组 排 序 + 统 计 最 大 值 最 小 值 \color{#48D1CC}{数组排序+统计最大值最小值} +

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eternity_GQM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值