2022年天梯赛比赛真题,L1基础题,C语言,没有算法的那种

2023-11-08

目录

L1-1 今天我要赢 (5 分)

L1-2 种钻石 (5 分)

L1-3 谁能进图书馆 (10 分)

L1-4 拯救外星人 (10 分)

L1-5 试试手气 (15 分)

L1-6 斯德哥尔摩火车上的题 (15 分)

L1-7 机工士姆斯塔迪奥 (20 分)

L1-8 静静的推荐 (20 分)

        提醒:由于没有原数据测试,笔者仅凭记忆复写的代码,可能有漏掉的细节,还请见谅。L2和L3的题菜菜太弱鸡了,不会,本文没有列出,若有需要可以看我本专栏里的另一篇。

L1-1 今天我要赢 (5 分)

2018 年我们曾经出过一题,是输出“2018 我们要赢”。今年是 2022 年,你要输出的句子变成了“我要赢!就在今天!”然后以比赛当天的日期落款。
输入格式:
本题没有输入。
输出格式:
输出分 2 行。在第一行中输出 I’m gonna win! Today!,在第二行中用 年年年年-月月-日日 的格式输出比赛当天的日期。已知比赛的前一天是 2022-04-22。


输入样例:


输出样例(第二行的内容要你自己想一想,这里不给出):

I’m gonna win! Today!

这一行的内容我不告诉你…… 你要自己输出正确的日期呀~

代码如下:

#include<stdio.h>
int main(){
	printf("I'm gonna win! Today!\n");
	printf("2022-04-23\n");
} 

L1-2 种钻石 (5 分)

2019年10月29日,中央电视台专题报道,中国科学院在培育钻石领域,取得科技突破。科学家们用金刚石的籽晶片作为种子,利用甲烷气体在能量作用下形成碳的等离子体,慢慢地沉积到钻石种子上,一周“种”出了一颗 1 克拉大小的钻石。
本题给出钻石的需求量和人工培育钻石的速度,请你计算出货需要的时间。
输入格式:
输入在一行中给出钻石的需求量 N(不超过 10的7次方 的正整数,以微克拉为单位)和人工培育钻石的速度 v(1≤v≤200,以微克拉/天为单位的整数)。
输出格式:
在一行中输出培育 N 微克拉钻石需要的整数天数。不到一天的时间不算在内。


输入样例:

102000 130

输出样例:

784

(PS:n在整型范围内,“不到一天的时间不算在内”  符合整型取数

代码如下:

#include<stdio.h>
int main(){
	int n,v;
	scanf("%d%d",&n,&v);
	printf("%d",n/v);
} 

L1-3 谁能进图书馆 (10 分)

为了保障安静的阅读环境,有些公共图书馆对儿童入馆做出了限制。例如“12 岁以下儿童禁止入馆,除非有 18 岁以上(包括 18 岁)的成人陪同”。现在有两位小/大朋友跑来问你,他们能不能进去?请你写个程序自动给他们一个回复。
输入格式:
输入在一行中给出 4 个整数:
禁入年龄线 陪同年龄线 询问者1的年龄 询问者2的年龄
这里的禁入年龄线是指严格小于该年龄的儿童禁止入馆;陪同年龄线是指大于等于该年龄的人士可以陪同儿童入馆。默认两个询问者的编号依次分别为 1 和 2;年龄和年龄线都是 [1, 200] 区间内的整数,并且保证 陪同年龄线 严格大于 禁入年龄线。
输出格式:
在一行中输出对两位询问者的回答,如果可以进就输出 年龄-Y,否则输出 年龄-N,中间空 1 格,行首尾不得有多余空格。
在第二行根据两个询问者的情况输出一句话:
 · 如果两个人必须一起进,则输出 qing X zhao gu hao Y,其中 X 是陪同人的编号, Y 是小孩子的编号;
 · 如果两个人都可以进但不是必须一起的,则输出 huan ying ru guan;
 · 如果两个人都进不去,则输出 zhang da zai lai ba;
 · 如果一个人能进一个不能,则输出 X: huan ying ru guan,其中 X 是可以入馆的那个人的编号。


输入样例 1:

12 18 18 8

输出样例 1:

18-Y 8-Y
qing 1 zhao gu hao 2


输入样例 2:

12 18 10 15

输出样例 2:

10-N 15-Y
2: huan ying ru guan

(PS:这种莫得良心的题就来浪费你宝贵时间的,不难你,但是会绕晕你,登顶路上的累赘)

带码如下:

#include<stdio.h>
int main(){
	int ban,lead,age1,age2;
	scanf("%d%d%d%d",&ban,&lead,&age1,&age2);
	if(age1<ban){
		if(age2<ban){         //都不能 
			printf("%d-N %d-N\n",age1,age2);
			printf("zhang da zai lai ba\n");
		}
		else if(age2<lead){   //1不能2能
			printf("%d-N %d-Y\n",age1,age2);
			printf("2:huan ying ru guan\n");
		}
		else{                 //1被2带着 
			printf("%d-Y %d-Y\n",age1,age2);
			printf("qing 2 zhao gu hao 1\n");
		}
	}
	else if(age1>=lead){
		if(age2<ban){         //1带 2 
			printf("%d-Y %d-Y\n",age1,age2);
			printf("qing 1 zhao gu hao 2\n");
		}
		else {                //都能  
			printf("%d-Y %d-Y\n",age1,age2);
			printf("huan ying ru guan\n");
		}
	}
	else if(age2<ban){       //1能2不能
		printf("%d-Y %d-N\n",age1,age2);
		printf("1: huan ying ru guan\n");
	}
	else {                  //都能  
		printf("%d-Y %d-Y\n",age1,age2);
		printf("huan ying ru guan\n");
	}
			
}
    
	

L1-4 拯救外星人 (10 分)

你的外星人朋友不认得地球上的加减乘除符号,但是会算阶乘 —— 正整数 N 的阶乘记为 “N!”,是从 1 到 N 的连乘积。所以当他不知道“5+7”等于多少时,如果你告诉他等于“12!”,他就写出了“479001600”这个答案。
本题就请你写程序模仿外星人的行为。
输入格式:
输入在一行中给出两个正整数 A 和 B。
输出格式:
在一行中输出 (A+B) 的阶乘。题目保证 (A+B) 的值小于 12。


输入样例:

3 6

输出样例:

362880

(PS:这才良心嘛,无坑无套路)

代码如下:

#include<stdio.h>
int main(){
	int a,b,i,sum=1;
	scanf("%d%d",&a,&b);
	for(i=1;i<=a+b;i++)
	    sum*=i;
	printf("%d\n",sum);		
}
    
	

L1-5 试试手气 (15 分)

我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件:
· 1、每个骰子摇出的点数都跟它之前任何一次出现的点数不同;
· 2、在满足条件 1 的前提下,每次都能让每个骰子得到可能得到的最大点数。
那么你应该可以预知自己第 n 次(1≤n≤5)摇出的结果。
输入格式:
输入第一行给出 6 个骰子的初始点数,即 [1,6] 之间的整数,数字间以空格分隔;第二行给出摇的次数 n(1≤n≤5)。
输出格式:
在一行中顺序列出第 n 次摇出的每个骰子的点数。数字间必须以 1 个空格分隔,行首位不得有多余空格。
输入样例:

3 6 5 4 1 4
3

输出样例:

4 3 3 3 4 3

样例解释:
这 3 次摇出的结果依次为:
6 5 6 6 6 6
5 4 4 5 5 5
4 3 3 3 4 3

(PS:灵光一闪,嘿嘿)

代码如下:

#include<stdio.h>
int main(){
	int n,i,aa[6],bb[6]={7,7,7,7,7,7};	
	for(i=0;i<6;i++)  
		scanf("%d",&aa[i]);		
	scanf("%d",&n);
	while(n--)
		for(i=0;i<6;i++){
			bb[i]--;
			if(bb[i]==aa[i])
				bb[i]--;			
		}
	for(i=0;i<6;i++){
		printf("%d",bb[i]);
		if(i!=5) printf(" ");
	}
}
    
	

L1-6 斯德哥尔摩火车上的题 (15 分)

在这里插入图片描述

 上图是新浪微博上的一则趣闻,是瑞典斯德哥尔摩火车上的一道题,看上去是段伪代码:
s = ‘’
a = ‘1112031584’
for ( i = 1 ; i < length(a);  i++ )  {
        if (a[i] % 2 == a[i-1] % 2) {
                s += max(a[i], a[i-1])
        }
}
goto_url(‘www.multisoft.se/’ + s)
其中字符串的 + 操作是连接两个字符串的意思。所以这道题其实是让大家访问网站 www.multisoft.se/112358(注意:比赛中千万不要访问这个网址!!!)。
当然,能通过上述算法得到 112358 的原始字符串 a 是不唯一的。本题就请你判断,两个给定的原始字符串,能否通过上述算法得到相同的输出?
输入格式:
输入为两行仅由数字组成的非空字符串,长度均不超过 10的4次方,以回车结束。
输出格式:
对两个字符串分别采用上述斯德哥尔摩火车上的算法进行处理。如果两个结果是一样的,则在一行中输出那个结果;否则分别输出各自对应的处理结果,每个占一行。题目保证输出结果不为空。
输入样例 1:

1112031584
011102315849

输出样例 1:

112358

输入样例 2:

111203158412334
12341112031584

输出样例 2:

1123583
112358

 (PS:此题有个小捷径,嘿嘿,不知道出题者是特意降低难度还是故意留的,也就是根本不用管当两个字符串都是长度为 1 的这种情况,先看代码,下面再解释 )

代码如下:

#include<stdio.h>
#include<string.h>
int main(){
	int i,la,lb,j=0;
	char aa[10001],aayi[10001],bb[10001],bbyi[10001];
	la=strlen(gets(aa));
	for(i=1;i<la;i++){
		if((aa[i]-'0')%2==(aa[i-1]-'0')%2)
			aayi[j++]= aa[i]>aa[i-1]?aa[i]:aa[i-1];
	}
	lb=strlen(gets(bb));
	j=0;
	for(i=1;i<lb;i++){
		if((bb[i]-'0')%2==(bb[i-1]-'0')%2)
			bbyi[j++]= bb[i]>bb[i-1]?bb[i]:bb[i-1];		
	}
	if(strcmp(aayi,bbyi)==0)
		printf("%s\n",aayi);
	else
		printf("%s\n%s\n",aayi,bbyi);	
}
    
	

        (解释:这个题目很有意思,当两个输入的字符串长度都为 1 时,此时题中的算法并为起作用(也就是for循环根本没有运行),两个结果字符串依旧是空的,算是相同的那一种情况吧,结果是啥也没有输出或者输出个换行符\n,然而有意思的是出题者最后一句话是 “题目保证输出结果不为空。”,那就是说根本不用管长度为1的情况咯,嘿嘿嘿,好玩吧。

           啰嗦一句:此题用C++会方便很多很多。

L1-7 机工士姆斯塔迪奥 (20 分)

在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。
你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。
给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。
输入格式:
输入第一行是三个整数 N,M,Q (1≤N×M≤10的5次方,0≤Q≤1000),表示地图为 N 行 M 列大小以及选择的行/列数量。
接下来 Q 行,每行两个数 Ti​,Ci​,其中 Ti​=0 表示 BOSS 选择的是一整行,Ti​=1 表示选择的是一整列,Ci​ 为选择的行号/列号。行和列的编号均从 1 开始。
输出格式:
输出一个数,表示安全格子的数量。
输入样例:

5 5 3
0 2
0 4
1 3

输出样例:

12

代码如下:(PS:分别有巧劲版和暴力版)

                                                                  巧劲版

#include<stdio.h>
int flag[1001]={0}; 
int main(){
	int n,m,q,Ti,Ci,r=0,c=0;
	scanf("%d%d%d",&n,&m,&q);
	while(q--){
		scanf("%d%d",&Ti,&Ci);
		if(flag[Ci]) continue;
		if(Ti==0)
			r++;
		else
			c++;
		flag[Ci]=1;
	}	
	printf("%d",m*n-r*m-c*n+r*c);
}
     
	

                                                                   暴力版

#include<stdio.h>
int main(){
	int n,m,q,i,j,Ti,Ci,sum=0;
	scanf("%d%d%d",&n,&m,&q);
	int aa[n+1][m+1];
	for(i=1;i<n+1;i++)
		for(j=1;j<m+1;j++)
			aa[i][j]=1;
	while(q--){
		scanf("%d%d",&Ti,&Ci);
		if(Ti==0)
			for(i=1;i<m+1;i++)
				aa[Ci][i]=0;
		else
			for(i=0;i<n+1;i++)
				aa[i][Ci]=0;	
	}
	for(i=1;i<n+1;i++)
		for(j=1;j<m+1;j++)
			if(aa[i][j])
				sum++;
	printf("%d",sum);
}
    
	

L1-8 静静的推荐 (20)

天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:
· 只考虑得分不低于 175 分的学生;
· 一共接受 K 批次的推荐名单;
· 同一批推荐名单上的学生的成绩原则上应严格递增;
· 如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 PAT 考试,且成绩达到了该企业的面试分数线,则也可以接受。
给定全体参赛学生的成绩和他们的 PAT 考试成绩,请你帮静静姐算一算,她最多能向企业推荐多少学生?
输入格式:
输入第一行给出 3 个正整数:N(≤105)为参赛学生人数,K(≤5×103)为企业接受的推荐批次,S(≤100)为该企业的 PAT 面试分数线。
随后 N 行,每行给出两个分数,依次为一位学生的天梯赛分数(最高分 290)和 PAT 分数(最高分 100)。
输出格式:
在一行中输出静静姐最多能向企业推荐的学生人数。
输入样例:

10 2 90
203 0
169 91
175 88
175 0
175 90
189 0
189 0
189 95
189 89
256 100

输出样例:

8


样例解释:
        第一批可以选择 175、189、203、256 这四个分数的学生各一名,此外 175 分 PAT 分数达到 90 分的学生和 189 分 PAT 分数达到 95 分的学生可以额外进入名单。第二批就只剩下 175、189 两个分数的学生各一名可以进入名单了。最终一共 8 人进入推荐名单。

笔者提醒:注意看189这个分数的第四个后面是 89,是小于90的,没达到面试分

(PS:破题目真坑人,菜菜的我就被这个点坑了好久时间。哎~~~~~~~~~~~~~~~~~~                就不该看他给的输入样例,注意坑点:在同一批名单中,同一个合格分数可以有很多人,只要输入的S达到PAT 面试分数线就算 )

(嘿嘿,来看本菜菜杰作,摒弃了一切算法的简单哦)

代码如下:

#include<stdio.h>
int aa[291]={0},bb[291]={0}; 
int main(){
	int n,k,s,fen1,fen2,sum=0,i;
	scanf("%d%d%d",&n,&k,&s);
	while(n--){
		scanf("%d%d",&fen1,&fen2);
		if(fen1>=175)
			aa[fen1]++;
		if(fen2>=s)
			bb[fen1]++;
	}
	while(k--){
		for(i=175;i<=290;i++){  
			if(aa[i]>0){	//效率就不看了哈,反正没超时  
				sum++;
				aa[i]--;	
				while(aa[i]>0&&bb[i]>0){
					sum++;
					aa[i]--;
					bb[i]--;
				}
			}
		}
	}
	printf("%d",sum); 
}
     
	

没骗你吧,没有用学的那些算法吧,基础题当然要用基础来解咯

好吧,其实是我太菜了,不会用

L1基础题到此就结束了

感谢观看,希望对你有帮助

也欢迎留言一起研究更简单的解法。

要是愿意点赞我爱你八辈子​​​​​​​​​​​​​​

​​​​​​​

​​​​​​​

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022年天梯赛比赛真题,L1基础题,C语言,没有算法的那种 的相关文章

  • C# abstract抽象类的定义,作用(使用场景)

    关于C 中抽象类的一些感想 写代码已经有很长一段时间 但感觉成长很少 基本是为了功能开发而开发 我相信80 的程序员都一样 基本都是拿网上的开源项目改改改后实现功能就行 很少会去深入 去思考为什么要这么来实现 所以有了今天的文章 我作为程序
  • Qt 迭代器(的两种风格,及方法简介)

    目录 Qt 迭代器 的两种风格 及方法简介 qt qlist简单迭代器的使用 Qt学习 qt中的迭代器举例 一 java风格迭代器 容器类 只读迭代器类 读写迭代器类 QList lt T gt QQueue lt T gt QListIt
  • OpenHarmony兼容性平台认证接入

    最近在做OpenHarmony兼容性平台认证接入 在此记录一下整个过程遇到的问题和解决办法 注册账号 进入OpenHarmony兼容是测评主页 https www openharmony cn certification document
  • DHCP服务器

    目录 一 DHCP是什么 二 DHCP服务器地址池是如何正确分配的 三 DHCP工作原理 广播域内 四 DHCP中继代理原理 广播域外 五 更新IP租约 六 超级作用域 七 DHCP配置案例 中继 一 DHCP是什么 动态主机配合协议 使用

随机推荐

  • C++内联函数inline

    C 内联函数 inline 1 基本内容 C 中内联函数 inline 和传统C语言宏定义 define 类似 原则上实现的过程都是表达名称或内容的替换 但是处理方法上会存在差别 内联函数的推出 也正是C 引入类后 为了取代存在一些缺点的宏
  • 软件工程师在职业生涯中说的32句话

    原文地址 http zhangjiankun880 iteye com blog 1625393 这篇文章来自于一篇旧博文 的启发 我已经用现在语言和技术更新了它 1 它在我的电脑上运行得很好 不信的话 你可以过来看 2 你有权限登录 你是
  • 离线数仓流程

    一 数据仓库 1 什么是数据仓库 1 数据仓库是为企业所有决策定制过程 提供所有系统数据支持的战略集合 2 通过对数据仓库中数据的分析 可以帮助企业 改进业务流程 控制成本 提高产品质量等 3 数据仓库 并不是数据的最终目的地 而是为数据最
  • Oracle VirtualBox 6.1.18 安装扩展包

    VirtualBox安装扩展包 下载的Oracle VM VirtualBox Extension Pack包不是 vbox extpack格式的或扩展名的 怎么办 见下文插曲 下载扩展包 扩展名为vbox extpack 关闭虚拟机电脑
  • Linux笔记:文件共享服务Samba基础使用

    文章目录 目的 基础使用 软件包安装 独立服务器 客户端 总结 目的 linux中目前还比较常用的文件共享服务主要就是NFS和Samba 但其实NFS一般也就linux间用用 Samba通常是一个更加好的选择 可以方便的在linux和win
  • 【实用工具】2020版IDEA调试入门(简单实用)

    文章目录 前言 开始调试 调试界面解释 步过 步入和强制步入区别 前言 相信大家在运行 Java 代码的时候难免会有自己设下的 bug 找不出来的时候 那叫一个头发纷飞止不住 头发堪忧啊 所以狗子我去网上看了许多关于 IDEA调式 文章 发
  • Servlet---解决post请求中中文乱码问题、解决后端传输数据给客户端出现乱码问题

    一 解决post请求中中文乱码问题 Override protected void doPost HttpServletRequest req HttpServletResponse resp throws ServletException
  • 「玩物志」来自 Jigsaw 的 Outline

    前段时间 来自谷歌 Google 母公司 Alphabet 旗下的科技孵化器 Jigsaw 开发了一款名为 Outline 的代理软件 我们今天就来体验一下谷歌同门开发的这款应用 看看它有没有给我们带来什么惊喜 关于 Outline 其实
  • 指针复习,注意小的知识点

    include
  • 【嵌入式】——理论基础

    STM32初探 一 计算机组成 1 嵌入式系统 1 1 什么是嵌入式系统 1 2 嵌入式系统组成 2 计算机系统 2 1 冯 诺伊曼结构 普林斯顿结构 2 2 哈佛架构 Harvard Architecture 3 各组件是如何通信的 3
  • 丽升评卷系统显示服务器地址错误,A3_丽升评卷系统评卷员操作方法-副本(2页)-原创力文档...

    PAGE PAGE 2 丽升评卷系统评卷员操作方法 操作方法说明将文字和图片结合 优化了叙述的条理性 尽量做到简洁明了 通俗易懂 即便不经培训 也可以独立动手操作 一 双击桌面上的丽升图标 弹出 用户登录 窗口 输入阅卷服务器IP地址 服务
  • Android手机上剪藏笔记到Obsidian

    前两天 Obsidian 正式发布了 v1 0 0 这两年老苏一直只是把 Obsidian 当一个 Markdown 编辑器在使用 是时候花时间研究怎么用 Obsidian 真正成为一个知识管理工具了 关于 Obsidian 详细的版本更新
  • Gensim word2vec计算多个词之间的相似度

    使用most similar 函数即可 代码如下 from gensim models import Word2Vec word model Word2Vec load wiki word2vec model 导入模型 word model
  • 用awk编写Shell脚本

    一 概述 1 产品概述 awk是一种编程语言 用于在linux unix下对文本和数据进行扫描与处理 数据可以来自标准输入 文件 管道 awk分别代表其作者姓氏的第一个字母 因为它的作者是三个人 分别是Alfred Aho Peter We
  • 吴恩达《机器学习》——线性回归代码实现

    线性回归 1 单变量线性回归 单变量线性回归公式 损失函数 优化算法 批梯度下降 BGD 2 多变量线性回归 特征缩放 标准化 参数的逆缩放 3 线性回归算法代码实现 向量实现 Python代码 4 实验结果 单变量回归 多变量回归 实验总
  • Ubuntu 14.04 64位上配置JDK操作步骤

    1 从 http www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 下载jdk 8u172 linux x64 tar gz 2 解压缩
  • 软件测试期末总复习(知识点+习题+答案)

    目录 1 软件测试基础 1 1软件概述 1 1 1软件的生命周期 1 1 2 软件开发模型 1 1 3 软件质量概述 1 2 软件缺陷管理 1 2 1 软件缺陷产生的原因 1 2 2 软件缺陷的分类 1 2 3 软件缺陷的处理流程 1 3
  • jvm之java类加载机制和类加载器(ClassLoader)的详解

    当程序主动使用某个类时 如果该类还未被加载到内存中 则JVM会通过加载 连接 初始化3个步骤来对该类进行初始化 如果没有意外 JVM将会连续完成3个步骤 所以有时也把这个3个步骤统称为类加载或类初始化 一 类加载过程 1 加载 加载指的是将
  • 无线连接服务器 很慢,无线网很慢是什么原因

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 无线网很慢的原因有 1 连接的网站所在的服务器带宽不足或负载过大 2 网线接触不良或者交换机的硬件原因导致 3 电脑本身存储文件过多等 所谓无线网络 是指无需布线就能实现各
  • 2022年天梯赛比赛真题,L1基础题,C语言,没有算法的那种

    目录 L1 1 今天我要赢 5 分 L1 2 种钻石 5 分 L1 3 谁能进图书馆 10 分 L1 4 拯救外星人 10 分 L1 5 试试手气 15 分 L1 6 斯德哥尔摩火车上的题 15 分 L1 7 机工士姆斯塔迪奥 20 分 L