CSDN 周赛37期题解
创始人
2025-05-28 22:30:06
0

CSDN 周赛37期题解

  • 1、题目名称:幼稚班作业
  • 2、题目名称:异或和
  • 3、题目名称:大整数替换数位
  • 4、题目名称:莫名其妙的键盘
  • 卡个bug
  • 小结

1、题目名称:幼稚班作业

幼稚园终于又有新的作业了。 老师安排同学用发给同学的4根木棒拼接成一个三角形。 当然按照正常的逻辑,如果不能拼
接成三角形。 必然要折断某个木棍来拼接三角形。 可是懒惰的小艺当然不会费力了! 如果拼接不成三角形,小艺就会把
它拼接成类似边长 1 1 2的伪三角形(两边之和等于第3边)。 如果伪三角形都拼接不成那就不交作业!

这个题目其实还是有点误导性的,老顾第一次碰到这个题目,是在 csdn 每日一练中碰到的,当时就算的蒙蒙的,最后是看了别人的题解才明白是啥逻辑。

四个木棒,任意三根能组成三角形就算ok,不需要两个最短的当做一根来处理这样的方式,于是解答就很简单了

class Solution:def __init__(self) -> None:passdef solution(self, arr):arr.sort()if arr[0] + arr[1] > arr[2] or arr[1] + arr[2] > arr[3]:return 1elif arr[0] + arr[1] == arr[2] or arr[1] + arr[2] == arr[3]:return 0else:return -1
if __name__ == "__main__":arr = [int(item) for item in input().strip().split()]sol = Solution()result = sol.solution(arr)print(result)

2、题目名称:异或和

小张找到了一个整数 N,他想问问你从 1 到 N 的所有不同整数的异或和是多少, 请你回答他的问题。
此题由CSDN用户a23333a提供。

额。。。。这个题是来送分的,从1一直异或和到N即可,异或运算符是 ^,知道运算符就很简单了。

class Solution:def __init__(self) -> None:passdef solution(self, N):result = 0for i in range(1,N + 1):result ^= ireturn result
if __name__ == "__main__":N = int(input().strip())sol = Solution()result = sol.solution(N)print(result)

3、题目名称:大整数替换数位

以字符串的形式给你一个长度为 M 的整数 N,请你计算出对这个数进行一次操作后模 9 的值为 1 的所有可能的不同操作
方式。
在一次操作中, 我们可以选择 N 的一个数位 N[i],并把它替换成另一个不同的 0 到 9 范围之内的数 B,当且仅当它们选
择的 i 或 B 不同时两种操作方式不同。
此题由CSDN用户a23333a提供

我恨这个叫 a23333a 的家伙,这个题目猛一接触我就犯懵了,这是啥?替换操作还能有多个结果?岁数大了,脑子就没那么灵光了,于是就拿起纸和笔一通乱画,总算明白题主的意思了。比如 10 余1,那么就可以把0换成9,或者91余1,可以把9换成0这样子,并且本身余1的也算。那么计算逻辑也就出来了,根据当前数字得到的余,来计算每个位上的数字有几种替换可能就好。其实做到最后老顾有点晕菜了,具体怎么算的也不确定了,可以看到老顾提交的代码中,余1的情况重复了,在for循环中,余1余0的部分都是无效代码。

另外,就是这个题目输入的内容是什么鬼?M居然是个1元素数组?你长度放数组里做毛线?还有就是N,居然是个大整数?bug区都有小伙伴提意见了啊亲。白瞎了我还专门写了两行代码想转下类型呢。如果是字符串,在没有python这么强大的整型支持的时候,计算一个数取9的余数,可以把各位的数字相加得到的和继续相加,直到变成1位数,就可以了,因为9的倍数有个很特别的点,就是所有位数的和相加就是9的倍数。

class Solution:def __init__(self) -> None:passdef solution(self, M, N):n = NN = str(N)mod = n % 9ans = 0if mod == 1:return (N.count('0') + N.count('9')) * 2for i in range(M[0]):if mod == 1:if N[i] in '09':ans += 1elif mod == 0:ans += 1else:if int(N[i]) == mod - 1:ans += 2else:ans += 1result = ansreturn result
if __name__ == "__main__":M = [int(item) for item in input().strip().split()]N = int(input().strip())sol = Solution()result = sol.solution(M, N)print(result)

4、题目名称:莫名其妙的键盘

有一个神奇的键盘,你可以用它输入a到z的字符,然而每当你输入一个元音字母(a,e,i,o,u其中之一)的时候,已输入的字
符串会发生一次反转! 比方说,当前输入了tw,此时再输入一个o,此时屏幕上的字符串two会反转成owt。 现给出一个
字符串,若用该键盘输入,有多少种方法可以得到?

这个题貌似也在哪里见过,但老顾自己没去做过这个题目,印象中应该是在谁家的题解里瞄过一眼。具体逻辑也记不清了。还是靠着纸上比划出来的。

具体就是在只有1个元音字母前,所有的可能都被锁死了,只需要计算最后只剩1个元音字母时的字符串长度即可(在这个元音字母翻转时)

在这一题,老顾浪费了很长时间,主要是 str=str[1:][::-1] 这里,当时忘记写成 -1,写成1了,最后怎么计算得到的结果都不对。。。郁闷了

class Solution:def __init__(self) -> None:passdef solution(self, str):s = strresult = 0while len(str) > 0 and str[0] in 'aeiou':str = str[1:][::-1] # 这里翻转字符串应该填写 -1,老顾写成1,浪费了大把时间if len(str) == 0:result += 1breakresult = 0while len(str) > 0 and str[0] not in 'aeiou':result += 1str = str[1:]if len(str) == 0:result += 1return result
if __name__ == "__main__":str = input().strip()sol = Solution()result = sol.solution(str)print(result)

卡个bug

在考试期间,他会检测是否有跳出页面,是否有粘贴代码,这算是正常的,但是,我没跳出页面,自己复制自己的代码,一粘贴(Ctrl+V)就算一次粘贴,鼠标右键粘贴没试过,估计也会记录。但是,有另外一种情况,当程序抛出异常后,选择抛出异常的文本,拖动到代码里,这个不算粘贴?

小结

这次的题目不难,脑子灵活点的小朋友提交的都很快,耐心点的小伙伴们也能拿到很好的成绩

这次看了下得分榜,真不知道那些得分连25分都没有的小伙伴们进来是干什么的?凑数的?时间不值钱吗?

本来以为这次因为耽误的时间较多,提交后都50多分钟了,还以为会落榜,结果这次参加考试的大佬好像也不多,除了常见的两位大佬@CodeRecycle,@请叫我问哥,其他都不太常见,居然让老顾又摸到了前十的尾巴。

在这里插入图片描述
参加了这么多场,才有3次进入前十,落伍了啊,老顾。不要甘于凑数,奋力向前。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...