【CODEMATE】比较 粤港澳信息学创新大赛 Python赛项 小学组、初中组CMP0008:比较/高中组/体验题库CMEP45:比较/编号P03850/任意进制数之间比较/任意进制转换

【CODEMATE】最小值 粤港澳信息学创新大赛 Python赛项 小学组、初中组CMP0001:最小值/高中组/体验题库CMEP46:最小值/编程题:P03886/列表排序/排序算法 通过图像我们可以发现,距离越近的两个点,他们之间的差值(y2-y1)才会越小,这启发我们将输入的数据排序,把对应数值的点放在对应的位置上(在图像上是 x值 和 y值,在python里就是。我们把输入数据从大到小排序,然后从头开始以 2 为间隔,用大的数减小的数(这样就不用加绝对值)得到差值,再把所有差值相加。他希望将这些数两两一组划分,计算组内元素的差的绝对值再求和,使得和最小,即他希望将这些数填入下面这个式子中的未知数中,使得下面这个式子运算结果尽可能小。第二行包含 2n 个整数,表示数的值。 阅读详情

前言

  时光飞逝,转眼已经大学毕业三年,看见年轻人不免感叹自己也不再青春,有时候会在想当初自己再努力一点会不会比当下的结果更好?人是成长了 只是追忆往事 意难平,如果当初自己不是那样 现在又怎会觉得时间可贵 机会难得?应活在当下 珍惜每次机会。

  粤港澳青少年信息学创新大赛官网:点击跳转到 https://yiic.gdcomf.com/,可以查看赛事信息,2024年05月18日有如下赛项可以报名:创意程序开发闯关竞赛、3D创意设计、微视频创意设计赛、AICG数字艺术创意设计竞赛、智能无人机创新挑战赛、智能创新挑战赛、智能建模创新挑战赛、数智作品创新赛。

  虽然自己不能报名,看到这个比赛还是让我想起以往经历:大学时跟随室友参加蓝桥杯、考研备战时刷算法题,以往都是用C语言以面向过程的思想刷题,如今比赛只有C++、GoC、Python 这些面向对象的编程语言可选,倒是激起了我的学习兴趣,看看面向对象和面向过程在处理算法的时候有啥不同?


  
  

问题描述

知识点:进制转换 体验题库 Python体验  难度值:3  尝试: 25  AC:2  上传者:

  问题描述

  比较十进制数的大小太简单了,永远同学想让你回答一个更加复杂的问题:给定 x 进制非负整数 a 和 y 进制非负整数 b,比较它们的大小关系。
  

  输入描述

  本题每个测试点有多组数据。
  第一行一个正整数 T,表示数据组数。
  接下来 T 行,每行四个整数 x,a,y,b,用空格隔开。
  

  输出描述

  每组数据输出一行。
  如果a<b,输出<;
  如果a=b,输出=;
  否则输出>。
  

  样例输入1

3
10 996 10 669
2 10101 8 25
12 AB 11 A00

  

  样例输出1

>
=
<

  

  数据范围与提示

  1≤T≤10,2≤x,y≤36。
  在十进制表示下,0≤a,b<109。
  特别说明:对于x,y≥11 的情况,9 之后的数码依次用大写字母A,B,C,⋯Z 表示。


  
  

做题思路、解决过程

输入、输出的代码思路

  通过读题可以得知:

  本程序至少有 5 个变量:t(比较次数,也跟输出有关)、x(变量 a 的进制)、a(变量 a 的数值)、y(变量 b 的进制)、b(变量 b 的数值)

  1.输入数据可以分为两部分:第一部分是需要比较大小的次数(对应输入描述:第一行一个正整数 T,表示数据组数);第二部分为 x 进制数 a 和 y 进制数 b(如样例输入最后一行:12进制的 AB 和 11进制的 A00)。

  2.输出部分固定为:“ > ”、 “ < ”、 “ = ”,三个符号其中一个,输出多少行与输入的正整数 T 有关。

  确定了以上两点,写代码时就要按着输入输出这两点要求去写。

  首先,第 1 点(输入)的第一部分:定义一个变量 t ,t 的值从键盘获取:

t = int(input())

  然后,第 1 点(输入)的第二部分:根据变量 t 的值获取 t 行数据,每行数据有4个值。

  第一时间我就想到 C语言里使用动态内存函数 malloc()和二维数组,然后开始上网找 python 里二维数组的创建。结果发现 python 里只有 列表、元组、字典,怎么看都和二维数组没关系,后来找到可以使用 import numpy 创建二维数组,我转念一想要是在提交代码框那里使用 import 会不会报错无法运行(后面测试了确实会报错)。然后我又尝试其他方法。

  python 里从键盘获取变量值的方法(函数)是 input(),于是我想用列表 list 接收每一行的值,再通过下标提取 x、y 进制和对应数值,但是后面发现 list 太长(如题目中3 行 4 个 x, a, y, b,此时 list 长 12)又需要额外的变量获取下标,如果 list 长度为 4,后面获取新的 x, a, y, b 又会覆盖掉 前面已经输入的 x, a, y, b。接着我就想怎么解决覆盖这个问题,能不能输入完第一组 x, a, y, b 后就得出需要输出的结果,把结果存放在一个专门存放结果的 list 里,等所有输入都完成时,结果也完成了,接着再顺序输出结果 list 的每一个元素。就这样在解决输入思路时确定了第 2 点输出部分的思路

  第 2 点代码可以抽象为:(列表用法可参考菜鸟教程:Python 列表(List))

# 存放结果的列表 list
list = []
# ... 省略中间输入过程
if a > b:	# 这里把“比较的过程”抽象成两个变量比较,实际上 a,b 需要转换成相同进制才能比较
	list.append(">")
elif a < b:
	list.append("<")
else:
	list.append("=")

  第 1 点第二部分需要一下子从键盘连续获取 4 个值,在 C语言里可以用 scanf(),于是我就去找 python 里 input()的用法,找到 input 多变量接收、多变量输入的用法 参考自:2.4. 方法四:结合使用splite()使用input()函数(多个变量 接收 多变量输入),于是这部分代码为:

 x, a, y, b = input().split()

  

算法部分:不同进制数的比较

  输入输出的代码有了,也就是程序的头和尾确定了,那么中间不同进制数之间的比较 这段核心算法的代码应该怎么设计呢?

  一开始我想到以前学过二进制、八进制、十进制、十六进制数之间的比较,核心思想是将不同进制转换成相同进制才能比较,这时需要确定最终转换成哪种进制方便比较。由于二进制数之间的比较要看位数、权重,比较时需要按从左到右方向逐位比较大小,比较麻烦,八进制、十六进制的比较也是类似。所以最终决定通过转换成十进制数再比较大小,这时又出现新的问题:如何将其他进制转换成十进制?以前 C语言的做法是把进制数每一位都放进数组里,再乘以对应权重,比如二进制 11001010转换成十进制为 1 * 27+ 1 * 26 + 0 * 25 + 0 * 24 + 1 * 23 +…,最终转换成十进制的 202,这时就体现出面向过程和面向对象的区别,C语言需要手写二进制转十进制、八进制转十进制、十六进制转十进制、x进制转十进制这些其他进制转十进制过程的函数,而 python 面向对象则只需要 int() 即可将其他进制数转换成十进制,其用法如下:(参考自菜鸟教程:Python int() 函数)

python 内置函数 int()

描述
int() 函数用于将一个字符串或数字转换为整型。

语法
以下是 int() 方法的语法:
class int(x, base=10)

参数
x -- 字符串或数字。
base -- 进制数,默认十进制。

返回值
返回整型数据。

  那么其他进制转成十进制的代码很简单了:

x = int(x)	# 由于 int() 第二个参数只能为整数,需要将字符转换成整数
y = int(y)
int(a, x)	# x 进制数 a,转换成十进制数
int(b, y)

  
  

完整代码

t = int(input())
list = []
for i in range(t):
    x, a, y, b = input().split()
    x = int(x)
    y = int(y)
    if int(a,x) > int(b,y):
        list.append(">")
    elif int(a,x) < int(b,y):
        list.append("<")
    else:
        list.append("=")
for i in range(t):
    print(list[i])

  
  

评测结果

评测结果


  
  

后记

  如果您觉得代码还有改进优化的地方,请您大方点评 我虚心请教

  面向过程和面向对象确实有很多不一样的地方,还需要多练,现在很多赛事的题库的语言都是面向对象,趁着现在还有这份精力、干劲,冲一冲!

  纸上得来终觉浅,绝知此事要躬行。

2024年青少年粤港澳大湾区比赛A轮模拟测试 python小学组 在 Python 中,函数使用def关键字来定义。def 函数名(参数列表) : 函数体 return 返回值def关键字用于定义函数。函数名是函数的名称,用于标识函数。参数列表是可选的,表示函数可以接受的输入参数,用逗号分隔多个参数。函数体是函数执行的代码块,包含具体的操作或计算。return语句用于返回函数的结果,如果没有return语句,函数将返回None。 阅读详情

相关推荐

2024年NOC大赛软件创意编程(python初中组初赛)真题

题型和分值:单选题(20题,40分)、判断题(5题,10分)、多选题(5题,20分)、填空题(10题,30分)1、下面的程序,会无限循环下去的是( ) A:代码如下 B:代码如下 C:代码如下 D:代码如下 2、执行完下面代码后,输出的结果为( ) A、[6,6,8,6,9,1]B、[1,6,6,6,8,9]C、[9,8,6,6,6,1]D、程序报错无输出3、使用字典统计字符串中每个字符出现的次数,横线上应该填写的代码是( ) A、dic[c]+1B、dic

xiaoxi_hahaha的博客 6054

探秘高效代码仓库管理工具 - CodeMate:一键优化您的开发之旅

在浩瀚的编码世界中,CodeMate犹如一盏明灯,照亮开发者高效协作的道路。它是一个精心设计的开源项目,旨在简化代码仓库的管理和维护工作,通过智能化的工具集,大幅度提升团队的开发效率。CodeMate不仅关注于版本控制的便捷性,更注重提高代码质量,促进团队间的无缝沟通。 ## 项目技术分析 ### 核心架构 CodeMate基于现代Web技术栈构建,核心采用Node.js和TypeScrip...

gitblog_01195的博客 1242

Python初中级面试题

这里的题有些是简单的话述,所以有可能需要你自己整理,自己整理出来的会加深你的记忆,有些我会附上文章,有些就简单而过,直接上干货了,希望对您有帮助。 1.深拷贝和浅拷贝之间的区别是什么? 深拷贝可理解为递归性质的拷贝,其开辟新的内存空间地址,在修改新的拷贝内容不会影响到旧的内容,其完全拷贝原内容的所以。 import copy b=copy.deepcopy(a) 而浅拷贝则是将一个对象的引...

冰月i 1万+

超实用的AI代码开发工具集合,开发人员必备的 AI 助手

如今各行各业都离不开互联网,日常生活中用到的软件,各种各样的功能,让我们用起来很方便,节省了很多麻烦,随着互联网的高速发展,软件开发类的人才需求量剧增,IT行业也成为了高薪的象征,一个待遇优厚、前景光明的高薪行业吸引着形形色色的人都想学习软件开发技术。今天和大家分享5款专注于编码的AI工具,可满足各种编程开发人员的需求,对初学者尤其有帮助,一起来看看吧!

haoshangwang的博客 1871

2023NOC软件创意编程赛项真题-python初中复赛

2023NOC软件创意编程赛项真题-python初中复赛

同伴:hacked_codemate

同伴:hacked_codemate

粤港澳青少年信息学创新大赛 Python 编程竞赛(初中部分知识点整理)

粤港澳青少年信息学创新大赛 Python 编程竞赛(初中部分知识点整理)

信竞星球_少儿编程题库 2092

简单的代码片段管理器CodeMate(64位版)

经常编程的人应该会发现,自己长期以来写下来的代码很多很多,其中不乏一些相对复杂一点的项目。这些代码之中,很多是作者当时思考了很久得出的智慧结晶。而很久之后,突然在某个项目里需要用到以前的代码,在一堆的代码里可能一时间难以找到需要的那一段。 我自己遇到这种情况不少次了,于是萌生了写一个代码管理器项目的想法。有了这么一个管理器,平时可以将自己辛苦写出来的代码片段或算法记录下来。实际上这只是个支持语法着色的简单代码编辑器,带了一点文件管理功能。 更新日志在http://blog.sina.com.cn/s/blog_6204ca300100lh20.html查看。

【Python】Python 环境 + Pycharm 编译器 官网免费下载安装(图文教程,新手安装,Windows 10 系统)

新建完 python 文件后在左边项目栏可以找到它,我们输入一些代码,点击上方绿色三角形按钮运行代码,测试能否正常运行,如果下方命令行出现 “Hello world!- April 5, 2023, Windows installer (64-bit) ,installer 是 .exe 安装包,embeddable package 是 .zip 压缩包。高级选项,按需勾选,选择安装位置 如 D 盘,接着点击 Install 安装。点击左下角菜单,输入 CMD,打开 CMD 命令行,

undefinedUser_1的博客 6065

Python基础训练100题(带答案).docx

这个习题包含了大部分Python入门级别的习题,还有习题答案,大家可以尽情下载,保证不会让你失望。还没下载的赶紧下载,性价比超高

2024学年粤港澳青少年信息学创新大赛(原:“大湾区青少年信息学创新大赛”)

2024学年粤港澳青少年信息学创新大赛(原:“大湾区青少年信息学创新大赛”)

青少年电子信息智能创新大赛 -- Python编程挑战赛初赛试题说明

老马的程序人生 2383

codemate-开源

codemate是一个eclipse插件。 它可以统计代码并为代码行号创建结果报告视图。

来华为实习的个人总结与感受

来华为实习的项目经历以及个人感受

zhouwenxing666的博客 1761

智能体在车联网中的应用:一份详尽到每日的100天学习路线图

这100天的旅程,是一次对毅力、学习方法和工程实践能力的综合考验。它不仅关乎掌握一系列技术点,更关乎培养解决复杂系统性问题的思维模式——将宏观的交通需求分解为微观的智能体决策,再通过多智能体协同涌现出宏观的智能行为。当你完成这份大纲时,你将拥有的不仅是一个项目作品集,更是一套应对“智能体+车联网”乃至更广泛AI+垂直领域挑战的方法论。未来已来,期待你成为构建智能交通新生态的关键贡献者。

IT深耕十余载,大道之简 1332

BeckHoff <--> ABB 机器手 Profinet 通讯

本文介绍了BeckHoff PLC与ABB机器人通过PROFINET通信的实现方案。主要内容包括:1)通信接口的详细变量定义,涵盖输入/输出信号、设备状态监控、夹爪控制等关键功能位;2)全局数据结构和变量配置说明;3)机器人任务控制程序的实现方法,包括参数校验、任务指令下发和状态监控机制;4)重点分析了任务调度功能块的代码逻辑,涉及慢速模式处理、多参数配置和执行状态判断。该方案通过结构化变量定义和模块化程序设计,实现了PLC对机器人作业的精确控制,为工业自动化系统集成提供了可靠通信范例。

工控智联驿站 1032

2024年粤港澳大湾区青少年信息学大赛Python初中组(含题库答题软件账号)

如需给您的学生安排作业和训练请点。如需给您的学生安排作业和训练请点。如需试题素材在线编程请点。如需试题素材在线编程请点。

新柠科技 830

VMware Converter 6.2.0保姆级教程:从物理机到ESXi主机的完整迁移指南(含常见错误排查)

本文提供VMware Converter 6.2.0从物理机迁移至ESXi主机的完整保姆级教程。详细解析了迁移前的环境规划、核心转换过程步骤、版本差异对比,并重点针对代理安装失败、任务卡顿、虚拟机无法启动等常见错误提供了实战排查与解决方案,确保P2V迁移顺利进行。

sam99的博客 380

Go C画图 CSP-J 信息学奥赛 2023.02.16 测试题

二进制数 101.11 对应的十进制数是( )。

青少年趣味编程 1325

避坑指南:Livox Mid-360双雷达SLAM配置中,那些官方文档没说的细节(IP设置、话题分离与时间同步)

本文详细解析了Livox Mid-360双雷达SLAM配置中的关键优化点,包括IP设置、话题分离与时间同步等官方文档未提及的细节。通过实战案例和代码示例,帮助开发者解决点云错位、IMU数据混乱等问题,提升SLAM系统的稳定性和精度。特别针对网络架构设计、驱动修改和时间同步机制提供了专业指导。

weixin_29745609的博客 425

Carsim和Matlab/Simulink联合仿真时Carsim匹配不到Matlab的解决方法

      本人使用Carsim和Matlab/Simulink联合仿真做过用机器学习方法解决ACC和简单换道的仿真,曾将8.02 2016 2018三个版本Carsim反复安装N次,有相同方向的同学或安装过程遇到问题的同学可以加本人qq505625869一起交流经验心得。 一.前言       Carsim是一款很好的联合仿真软件,使用Carsim,可以避免搭建很多非常复杂的动力学模型

Kaikai_Liao的博客 8767

2024年粤港澳大湾区青少年信息学大赛Python小学组(含题库答题软件账号)

如需给您的学生安排作业和训练请点。如需给您的学生安排作业和训练请点。如需试题素材在线编程请点。如需试题素材在线编程请点。

新柠科技 686

【原创】Ubuntu20.04 安装 Isaac Gym 仿真器

Ubuntu20.04 安装 Isaac Gym

qq_54900679的博客 3091

【CODEMATE】CMT0018:字母派对(party) 粤港澳信息学创新大赛 C++/Python 小学组/初中组/高中组 文件读写/字符串/逻辑运算/数组/列表 C/C++/Python解题思路

小明发现了一种有趣的字母派对规则:字符串中奇数位置的字母必须是小写,偶数位置的字母必须是大写。他需要编写一个程序,判断给定的字符串是否符合这一规则。程序需要从文件 party.in 中读取多组测试数据,并输出每组数据是否符合规则的结果到文件 party.out 中。核心思路是通过遍历字符串,分别检查奇数位和偶数位的字母是否符合大小写要求,最终根据逻辑与运算输出“Yes”或“No”。代码示例展示了如何在 C/C++ 和 Python 中实现文件读写和字母大小写判断。

undefinedUser_1的博客 1205

【Cursor+Playwright-MCP 实现 AI 自主功能测试】含实例代码脚本+保姆级教程

本文档详细介绍了如何使用 Cursor(AI 编程助手)和 Playwright-MCP 库实现基于 GPT 模型的自动化功能测试。文档从环境搭建开始,逐步指导读者如何通过 Playwright 进行浏览器自动化,并利用 Playwright-MCP 集成 GPT 模型生成测试计划、执行测试步骤及生成测试报告。核心步骤包括安装依赖、配置 OpenAI API 密钥、编写代码实现 AI 驱动的测试流程,以及生成详细的测试报告。通过本文档,读者可以快速掌握从 0 到 1 实现 AI 自主功能测试的全流程。

Dreams°的博客 2891

基于Python的上市公司年报PDF文本抓取与财务风险分析系统

随着大数据时代的到来,金融数据分析已成为投资决策和风险管理的重要工具。上市公司年报包含了丰富的财务信息和经营数据,通过对这些数据的提取和分析,可以评估公司的财务状况和潜在风险。本文将详细介绍如何使用Python构建一个完整的上市公司年报文本抓取与财务风险分析系统,涵盖PDF文本提取、数据清洗、财务指标计算和风险分析等全流程。

2201_76125261的博客 312
上一篇: 【Windows iTunes】更改 iTunes Media 文件夹位置最全最强教程。针对更改失败,重启后恢复默认路径以及 iTunes 偏好设置无法更改 iTunes Media 文件存储位置问题
下一篇: 【CODEMATE】最小值 粤港澳信息学创新大赛 Python赛项 小学组、初中组CMP0001:最小值/高中组/体验题库CMEP46:最小值/编程题:P03886/列表排序/排序算法
我的大老婆
博客等级 码龄8年 118粉丝 20原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值