Python解题 - CSDN周赛第22期 - 取数字

news2025/1/21 0:57:56

又是大放水的一期,连我都可以10分钟解决战斗了。得益于Python,前面三题5分钟内就pass了,而最后一题也是之前刷过类似的。。。于是相应地,这期的题解也会简短一些。

这次的好成绩代表不了实力,但也希望这样的好运气能一直保持。:)


第一题:C++难题-大数加法

大数一直是一个c语言的一个难题。现在我们需要你手动模拟出大数加法过程。请你给出两个大整数加法结果。

分析

Python骗分专属。题目都说了,C++难题,但不是Python的难题啊。Python里默认整数都是长整型,不存在数据溢出的问题,所以直接返回两数之和就pass了,一分钟之内。

参考代码

n = int(input().strip())
m = int(input().strip())
print(n + m)

第二题:最长回文串

找出最先出现的最长回文串(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串)。

分析

一眼看去还以为要用到那个难懂的“马拉车”算法,再不济也要从中心枚举之类的,结果先手试了暴力,竟然就过了。。。

做法就是从左向右、从长到短,暴力穷举所有字符串,检查是否是回文(逆转字符串与原字符串相等),一旦找到就立即结束搜索,打印答案。这里使用自定义函数solution的做法,可以省去break嵌套循环的麻烦(当然题目也自带了函数模板)。

参考代码

def solution(str):
    n = len(str)
    for i in range(n-1, 0, -1):
        for j in range(n-i):
            temp = str[j:j+i+1]
            if temp==temp[::-1]:
                return temp
str = input().strip()
print(solution(str))

第三题:求最小元素

假设按照升序排序的数组在预先未知的某个点上进行了旋转,请找到数组中最小元素,(例如数据[0,1,2,4,5,6,7]可能变 为[4,5,6,7,0,1,2],最小元素是0)。您可以假设阵列中不存在重复项。

分析

又是一道“谜底就在谜面上”的大水题。找到数组中最小元素,和数组是不是升序、有没有旋转有什么关系?将信将疑地使用 min 函数找出数组最小值,结果pass了。。。1分钟之内。

墙裂怀疑本题出错了。

参考代码

n = int(input().strip())
arr = [int(item) for item in input().strip().split()]
print(min(arr))

第四题:最大数

给定任意一个数字 m,然后给出数字 n,则需在 m 中去掉 n 位数,保持各位顺序不变的情况下,得到最大数。

示例:

示例
输入

12314 3

输出34

分析

曾经在问答区帮别人回答过类似的问题,所以一眼看到题目就有了思路:把原问题中的取走 n 个数使得剩下的数字最大,变成新问题:取走 len(m)-n 个数,使它们组成的数字最大。

很显然,新问题里我们每次都要试着取最大的数字。但是题目有个很关键的要求是,不能改变数字相对的顺序。也就是说,如果我们在12314中取走了3,那么下一个数字就只能在3后面的14中取了。所以这里就带来一个小问题:可能剩下的数字个数不够,比如我们还要取三个数,但只剩下1和4两个数了。在这种情况下,前面就不能取走最大的数字3了,而是应该在它前面的数字里再寻找最大的数字,然后重复判断,直到取走某个次大的数字后,剩下的数字个数足够。

由于在取数的过程中需要改变原来的字符串 m 表示剩下哪些数,而且查找最大的数字也需要遍历(可以使用字典优化),最差的情况比如 m=123456,n=1,用这种方法就要取五个数,而每取一个数都要遍历 len(m) 遍字符串 m。如果用 m 代表 len(m) 的话,时间复杂度应该是 O(n*m*m) ,但是在比赛中能够pass此题,说明 m 也不会太大。

参考代码一

m, n = input().strip().split()
n = int(n)
l = len(m)
if n >= l: # 如果要取走的数字大于m的长度,则剩下0
    print(0)
elif n == 0: # 如果要取走0个数,则剩下就是m
    print(m)
else:
    res = ""
    i = 0
    p = m.index(max(m))
    while i < l-n:
        if len(m)-p >= l-n-i:
            res += m[p]
            m = m[p+1:]
            if m: p = m.index(max(m))
            i += 1
        else:
            p = m.index(max(m[:p]))
    print(res)

其实上面的代码是有些繁琐的,思路也不够简洁,复盘的时候可读性不高,在比赛过程中看到pass了就提交了。赛后想想,其实可以直接模拟:循环 n 次,每次从 m 中取走一个数,使得剩下的数最大即可。如果算上字符串拼接,时间复杂度依然是 O(n*m*m) ,m代表字符串m的长度。直觉上应该还可以再优化,以后想到再更新吧。

参考代码二

m, n = input().strip().split()
n = int(n)
if n >= len(m):
    print(0)
elif n == 0:
    print(m)
else:
    for _ in range(n):
        maxn = 0
        for i in range(len(m)):
            temp = int(m[:i]+m[i+1:])
            maxn = max(maxn, temp)
        m = str(maxn)
    print(maxn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理 概览理解 NLP specialization - Supervised ML

自然语言处理 概览理解 NLP specialization - Supervised ML Remember that understanding the data is one of the most critical steps in Data Science 自然语言处理可以实现语义识别&#xff0c;情感识别&#xff0c;文本翻译等等功能&#xff0c;当然最近情况下最火的便…

Java支付宝沙箱环境支付,官方Demo远程调试【内网穿透】

文章目录1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境中有多种支付…

MATLAB-一维插值运算

一维插值是指对一维函数进行插值。已知n1个结点(x,y,)&#xff0c;其中x,互不相同(j0&#xff0c;1&#xff0c;2&#xff0c;... n),求任意插值点x*处的插值y*。求解一维插值问题的主要思想是:设结点由未知的函数g(x)产生&#xff0c;函数g(x)为连续函数且g(x)y;(j0,1,...,n);…

北大硕士LeetCode算法专题课---算法复杂度介绍

算法复杂度中大O的含义 推荐教程&#xff1a;北大硕士带你手撕Leetcode算法题 大O复杂度表示法 算法面试中&#xff0c; 经常会被问到&#xff0c;你写的算法复杂度是多少&#xff0c; 或者设计一个复杂度为 O(nlogn) 的算法复杂度分析是估算算法执行效率的方法&#xff0c;…

大厂的格局在细节上是怎么被拉低的

讲几个例子&#xff0c;都是大厂&#xff0c;作为大厂小散沙客户&#xff0c;也就是平头老百姓的角度来反观一下几个问题 第一个【脉脉】 今天&#xff08;2023年1月9日&#xff09;偶尔相等一下买买查看一下信息&#xff0c;由于手机没有安装APP.想借助PC的web端登录一下 它提…

小程序中无法播放阿里云的视频点播

背景视频直接存在自己的服务器&#xff0c;视频大了会存在卡顿现象&#xff0c;只能用阿里云或其它服务商的相关服务。原来在APP中已有了视频播放的功能&#xff0c;而且已经能正常使用&#xff0c;但视频的url是 http。现在期望在小程序中也添加视频播放的功能。初期操作申请相…

css——扁平圆弧(底部弧度)

案例演示 使用伪类处理&#xff0c;先将元素自身定位为relative&#xff0c;伪类设置content:‘’&#xff0c;并相对定位为absolute&#xff0c;再设置下left ,top 值&#xff0c;然后通过改变width和和left就可以调节弧度。宽度需大于100%&#xff0c;将left设为&#xff08;…

微分方程(人口预测与传染病模型)

一、定义 微分方程&#xff1a;含导数或微分的方程 微分方程的阶数&#xff1a;所含导数或微分的最高阶数&#xff0c;如y’’’2y’’-2x0是三阶微分方程 微分方程的解&#xff1a;使得微分方程成立的函数 例如y’-2x0的解可以为x或者x1 微分方程的通解和特解&#xff1a;特…

基于Arduino Pro Micro的游戏手柄制作

基于Arduino Pro Micro的游戏手柄开发 1. Arduino IDE下载及安装 在Arduino官网Software | Arduino下载最新版Arduino IDE并安装。 或使用QQ群中提供的免安装版Arduino IDE&#xff0c;安装完成后Arduino Pro Micro的pin脚定义使用下面路径下的leonardo: 2. Arduino Pro Micr…

GrapeCity 文档处理商业系列Crack-6.0.2Version

GrapeCity 文档处理商业系列Crack文档 API 使用高速、直观的文档 API 全面控制您的文档 包括&#xff1a; Documents for Excel, .NET Documents for Data Viewer Documents for PDF Documents for PDF Viewer Documents for Word Documents for Imaging Documents for Image V…

数据库MySQL基础入门之MySQL隐式转换

一、问题描述 rootmysqldb 22:12: [xucl]> show create table t1\G *************************** 1. row *************************** Table: t1Create Table: CREATE TABLE t1 ( id varchar(255) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8 1 row in set (0.0…

ArcGIS基础实验操作100例--实验74灾害影响缓冲区分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验74 灾害影响缓冲区分析 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;…

剑指offer----C语言版----第十四天

表示数值的字符串 原题链接&#xff1a;剑指 Offer 20. 表示数值的字符串 - 力扣&#xff08;LeetCode&#xff09;1.1 题目描述 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。数值&#xff08;按顺序&#xff09;可以分成以下几个部分&a…

常见胶片的分类和结构

胶片的分类方法非常多&#xff0c;本质上属于高分子材料范畴&#xff0c;很多类别已经超出笔者的认知范围&#xff0c;我们只对与档案数字资源长期保存和异质备份相关的胶片分类方法进行介绍。笔者整理了十大分类如下图所示&#xff1a; 各分类简要介绍 1. 按宽度尺寸分类 常…

【Linux】进程信号万字详解(上)

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

194: vue+openlayers 根据卫星lat,lon,alt,俯仰角,方位角,绘制地面的拍摄的区域

第194个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中研究卫星的拍摄范围。 根据卫星的高度,经度,纬度,方位角,俯仰角以及拍摄的幅宽,幅长等参数,绘制拍摄的矩形框和中心点。这里用到了一些公式,参考代码,尤其是大部分使用的是弧度而非角度,需…

青铜到王者,8本最好的Python从入门到进阶的书

春节长假还有1周了&#xff0c;是时候囤一些书充充电了&#xff01;新的一年群里很多小伙伴开始想学Python&#xff0c; 无论是准备转行的&#xff0c;还是想多学一份技能提高职场竞争力的&#xff0c;都想选择Python赛道&#xff0c;下面给大家推荐一些非常不错的Python入门到…

联合证券|利好叠加有望实质兑现 机构加码布局装修建材

组织加码布局装饰建材板块。据了解&#xff0c;受房地产利好方针带动、职业竞赛格式持续改进及原材料本钱下降等多重利好叠加&#xff0c;装饰建材板块有望迎来实质性利好&#xff0c;虽然曩昔两个多月来相关公司有所反弹&#xff0c;但组织以为行情仍然在路上。 多重利好推进 …

架构设计---高可用的处理

前言&#xff1a; 系统的高可用架构就是要在上述各种故障情况下&#xff0c;保证系统依然可用提供服务&#xff0c;具体包括以下几种架构方案。 冗余备份&#xff1a; 各种服务器故障是不可避免的&#xff0c;架构设计上就要保证&#xff0c;当服务器故障的时候&#xff0c;…

简短通俗理解动态规划算法--最短路径问题

问题&#xff1a;从某顶点出发&#xff0c;沿图的边到达另一顶点所经过的路径中&#xff0c;各边上权值之和最小的一条路径——最短路径。在博客动态规划算法中介绍了动态规划的基本思想已经建立动态规划模型的步骤&#xff0c;下面将其中的方法分析最短路径问题。 最短路径有…