2021年团体程序设计天梯赛-总决赛_L1

news/2024/6/23 20:17:39

标题:L1-1 人与神

题目:

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

输入格式:

本题没有输入。

输出格式:

在一行中输出 To iterate is human, to recurse divine.

输入样例:

输出样例:

To iterate is human, to recurse divine.

要求:

解析:

思路:

签到题,直接输出。

代码:

#include<iostream>
using namespace std;
int main()
{cout<<"To iterate is human, to recurse divine."<<endl;return 0;
}

结果:

标题:L1-2 两小时学完C语言

题目:

Q.JPG

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

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

输入格式:

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

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

输出格式:

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

输入样例:

100000 1000 72

输出样例:

28000

要求:

解析:

思路:

答案=总量-(速度*时间)

代码:

#include<iostream>
using namespace std;
int main()
{int N,K,M;//教科书有 N 个字,每分钟能看 K 个字,看了 M 分钟cin>>N>>M>>K;cout<<N-K*M;return 0;
}

结果:

标题:L1-3 强迫症

题目:

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

输入格式:

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

输出格式:

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

输入样例 1:

9808

输出样例 1:

1998-08

输入样例 2:

0510

输出样例 2:

2005-10

输入样例 3:

196711

输出样例 3:

1967-11

要求:

解析:

思路:

先判断字符的长度,如果为6,则输出 前四位-后两位;若四位,则通过前两位判断19还是20,输出19或20,再输出 前两位-后两位。

代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{string num;cin>>num;int len=num.length();//6 或者 4if(len==6) cout<<num[0]<<num[1]<<num[2]<<num[3]<<"-"<<num[4]<<num[5];else{int pan=(num[0]-'0')*10+(num[1]-'0');if(pan<22) cout<<"20"<<num[0]<<num[1]<<"-"<<num[2]<<num[3];else cout<<"19"<<num[0]<<num[1]<<"-"<<num[2]<<num[3];
}return 0;
}

结果:

标题:L1-4 降价提醒机器人

题目:

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

输入格式:

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

接下来 N 行,每行有一个实数 Pi​(−1000.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

要求:

解析:

思路:

按题目所给要求模拟即可。

代码:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{int N,M;cin>>N>>M;while(N--){double cnt;cin>>cnt;if(cnt<M)printf("On Sale! %.1f\n",cnt);
}return 0;
}

结果:

标题:L1-5 大笨钟的心情

题目:

心情.jpg

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

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

输入格式:

输入在一行中给出 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

要求:

解析:

思路:

用数组先存储对应时间的心情值,再通过输入的数据进行搜索,并输出对应结果。

代码:

#include<iostream>
using namespace std;
int main()
{int cnt[25];for (int i = 0; i < 24; i++) {cin >> cnt[i];}int ans;while (cin >> ans) {if (ans >= 0 && ans <= 23) {if (cnt[ans] > 50) cout << cnt[ans] << " Yes" << endl;else cout << cnt[ans] << " No" << endl;}else continue;}return 0;
}

结果:

标题:L1-6 吉老师的回归

题目:

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

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

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

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

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

输入格式:

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

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

输出格式:

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

输入样例 1:

5 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.

输入样例 2:

5 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

要求:

解析:

思路:

本题,只需要根据题目意思进行即可。

注意点:

本题,一定要用 getchar(); 去吸收数字后的回车键。

代码:

#include<iostream>
#include <sstream>
using namespace std;
int main()
{string a = "qiandao", b = "easy";string cnt;int N, M; cin >> N >> M;getchar();//注意空格for (int i = 0; i < N; i++) {getline(cin, cnt);if (cnt.find(a) != -1 || cnt.find(b) != -1) continue;if (M == 0) {cout<<cnt;return 0;}M--;}cout << "Wo AK le";return 0;
}

结果:

标题:L1-7 天梯赛的善良

题目:

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

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

输入格式:

输入在第一行中给出一个正整数 N(≤2×104),即参赛学生的总数。随后一行给出 N 个不超过 106 的正整数,是参赛学生的能力值。

输出格式:

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

输入样例:

10
86 75 233 888 666 75 886 888 75 666

输出样例:

75 3
888 2

要求:

解析:

思路:

在输入的同时,更新max和min的值,再遍历统计。

代码:

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> cnt;
int main()
{int ans_min=0,ans_max=0;int N,mina=1e6+10,maxa=-1;cin>>N;for(int i=0;i<N;i++){int a;cin>>a;maxa=max(maxa,a);mina=min(mina,a);cnt.push_back(a);}for(auto it=cnt.begin();it!=cnt.end();it++){if((*it)==mina) ans_min++;if((*it)==maxa) ans_max++;}cout<<mina<<" "<<ans_min<<endl;cout<<maxa<<" "<<ans_max;return 0;
}

结果:

标题:L1-8 乘法口诀数列

题目:

本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。

输入格式:

输入在一行中给出 3 个整数,依次为 a1​、a2​ 和 n,满足 0≤a1​,a2​≤9,0<n≤103。

输出格式:

在一行中输出数列的前 n 项。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

2 3 10

输出样例:

2 3 6 1 8 6 8 4 8 4

样例解释:

数列前 2 项为 2 和 3。从 2 开始,因为 2×3=6,所以第 3 项是 6。因为 3×6=18,所以第 4、5 项分别是 1、8。依次类推…… 最后因为第 6 项有 6×8=48,对应第 10、11 项应该是 4、8。而因为只要求输出前 10 项,所以在输出 4 后结束。

要求:

解析:

思路:

利用双指针的进行运算,如下过程。

代码:

#include<iostream>
#include<vector>
using namespace std;
int main()
{vector<int> ans;int a1, a2, n;//a1*a2<=81cin >> a1 >> a2 >> n;int k = 0;ans.push_back(a1); ans.push_back(a2);while (1) {auto it = ans.begin()+k;//指向a1,当前元素if (ans.size() >= n) break;int a3 = (*it)*(*(it+1));if (a3 < 10) {ans.push_back(a3);} else {ans.push_back(a3 / 10); ans.push_back(a3 % 10);}k++;}for (int i = 0; i < n-1; i++)cout << ans[i]<<" ";cout<<ans[n-1];return 0;
}

结果:


https://www.xjx100.cn/news/3380560.html

相关文章

SpringBoot和Vue2项目配置https协议

1、SpringBoot项目 ① 去你自己的云申请并下载好相关文件&#xff0c;SpringBoot下载的是Tomcat&#xff08;默认&#xff09;&#xff0c;Vue2下载的是Nginx ② 将下载的压缩包里面的.pfx后缀文件拷贝到项目的resources目录下 ③ 编辑配置文件 &#xff08;主要是框里面的内…

蓝桥杯——16

学习视频&#xff1a;17-深搜的剪枝策略视频讲解_哔哩哔哩_bilibili #include<iostream> #include<cstring> using namespace std; int n, m; string maze[110]; bool vis[110][110]; int dir[4][2] { {0,1},{0,-1},{1,0},{-1,0} }; int ans 100000; bool in(in…

头歌-机器学习 第13次实验 特征工程——共享单车之租赁需求预估

第1关&#xff1a;数据探索与可视化 任务描述 本关任务&#xff1a;编写python代码&#xff0c;完成一天中不同时间段的平均租赁数量的可视化功能。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 读取数据数据探索与可视化 读取数据 数据保存在./step1/…

海山数据库(He3DB)原理剖析:浅析OLAP数据库计算引擎中的统计信息

背景&#xff1a; 统计信息在计算引擎的优化器模块中经常被提及&#xff0c;尤其是在基于成本成本优化&#xff08;CBO&#xff09;框架中统计信息发挥着至关重要的作用。CBO旨在通过评估执行查询的可能方法&#xff0c;并选择最有效的执行计划来提高查询性能。而统计信息则提…

外包干了3天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

初识--数据结构

什么是数据结构&#xff1f;我们为什么要学习数据结构呢....一系列的问题就促使我们不得不了解数据结构。我们不禁要问了&#xff0c;学习C语言不就够了吗&#xff1f;为什么还要学习数据结构呢&#xff1f;这是因为&#xff1a;数据结构能够解决C语言解决不了的问题&#xff0…

位图布隆过滤器的原理及实现

目录 位图的概念&#xff1a; 位图的前置知识&#xff1a;位运算 位图的实现&#xff1a; 位图的基本参数和构造方法&#xff1a; 位图的插入&#xff1a; 位图的查找&#xff1a; 位图的删除&#xff1a; 布隆过滤器概念&#xff1a; 布隆过滤器的实现&#xff1a; …

NLopt

非线性优化–NLopt (nonlinear optimization)是一个免费的开源的库&#xff0c;提供了很多种非线性优化算的使用接口。 1、其中非常大的优势就是提供多种支持的语言&#xff0c;包括C/ C/ Julia/ Python/ R/ Fortran/ Lua/ OCaml/ Octave等都支持 1. 区别 **COBYLA&#xff0…