当前位置: 首页 > news >正文

qy_蓝桥杯编程系列_编程17 好数

编程17 好数 简析

这题写起来说难不难,只是我卡了好几次所以写一篇梳理下思路

一、 题目引入

image

如图所示的题目,看起来也并不复杂,从数字尾端作奇数位开始往前算,奇数位和偶数位相交替,个位是奇数位,十位就是偶数位,百位是奇数位以此类推。一个数字N的奇数位和偶数位上对应为奇数和偶数就算作一个好数,我们需要求从1开始到N的一共有多少个这样的数即可。我的思路是两个循坏搞定。

二、 解题

先输入整数N,定义计数变量

N = int(input())
count = 0                # 统计符合条件的数字个数

进入第一层循坏之后,首先需要单独设定代表当前数字的变量current,以免用该数字遍历时所作修改影响外层循环遍历,然后需要设定标志变量,用于更改奇数和偶数位状态、当前是否为好数

for num in range(1, N + 1):current = numtarget_parity = 1         # 判定当前是奇数位还是偶数位,1-奇数位,0-偶数位is_good = 1               # 判定当前还是否为好数,1-好数,0-不是好数

然后对当前遍历的数字num进行判断,其奇数位和偶数位是否分别为奇数和偶数,用取余判断即可,循环整除以便确定这个数上的每一位

while current > 0:digit = current % 10current //= 10# 若当前为奇数位if target_parity == 1:if digit % 2 != 1:      # 奇数位上数字不为奇数时is_good = 0           # 不是好数break# 若当前为偶数位else:if digit % 2 != 0:      # 偶数位上不是偶数is_good = 0           # 不是好数break# current经过整除来到上一位,奇偶数位改变,奇偶数位判定相应切换target_parity = 1 - target_parity

第二层循环结束后可以根据is_good判断该数是否为好数

if is_good == 1:count += 1

此题难点在逻辑梳理上,需要理清楚两个循环和两个标志变量的关系,放在合适的位置,否则可能出现过多冗余甚至错误。

Tips:完整代码

N = int(input())
count = 0                # 统计符合条件的数字个数for num in range(1, N + 1):current = numtarget_parity = 1         # 判定当前是奇数位还是偶数位,1-奇数位,0-偶数位is_good = 1               # 判定当前还是否为好数,1-好数,0-不是好数while current > 0:digit = current % 10current //= 10# 若当前为奇数位if target_parity == 1:if digit % 2 != 1:      # 奇数位上数字不为奇数时is_good = 0           # 不是好数break# 若当前为偶数位else:if digit % 2 != 0:      # 偶数位上不是偶数is_good = 0           # 不是好数break# current经过整除来到上一位,奇偶数位改变,奇偶数位判定相应切换target_parity = 1 - target_parityif is_good == 1:count += 1print(count)
http://www.jsqmd.com/news/58731/

相关文章:

  • 读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer Guide 软件开发者指南 Chapter1Chapter2
  • static相关
  • 74_基于深度学习的垃圾桶垃圾溢出检测体系(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • Java创建对象完整流程详解
  • PQ v.Next Beta计划与估计
  • re笔记5
  • 北京陪诊公司陪诊师排行
  • 北京陪诊公司排行:专业服务破解就医难题,三甲机构树立行业标杆
  • 【RAG安全】Pirates of the RAG: Adaptively Attacking LLMs to Leak Knowledge Bases - 指南
  • 20232319 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 北京上门收酒茅台五粮液洋酒老酒名酒
  • 北京上门收酒茅台五粮液洋酒老酒名酒董酒习酒
  • this view is read-only (IntelliJ IDEA) - 详解
  • 构建高可靠 OpenEuler 运维体系:从虚拟化部署到 Systemd 自动化核心实践 - 教程
  • 内存管理-55-工具-page_types - Hello
  • 2025 年黑猪批发基地品牌推荐排行榜,黑金刚黑猪批发,国寿黑猪批发,杜洛克黑猪批发,沂蒙黑猪批发,太湖原种黑猪批发,三元仔猪黑猪批发,长白仔猪黑猪养殖,黑猪繁育,黑猪仔猪批发,原种黑猪批发基地推荐
  • 2025年必收藏的8款AI论文生成神器!高效写作轻松搞定
  • FWT 学习笔记
  • 补发读后感
  • 北京上门收酒的公司
  • 2025年LED显示屏经销最新推荐,室内LED显示屏,户外LED显示屏,单色LED显示屏,全彩LED显示屏选择指南!
  • 人工智能之数据分析 Pandas:第二章 Series
  • 2025污染源监测设备厂家有哪些?江苏做监测设备运维的公司
  • AIM:用 AI 写 Git 提交信息
  • 糖尿病预测(较好的代码)
  • OI回忆录。
  • 实用指南:二十四、STM32的DMA
  • 北京上门收酒
  • 暗黑2重制版(Diablo II Resurrected)——自制地图高速公路简化版 - dark
  • Nat Commun | DNALONGBENCH:基因组学长距离DNA预测任务的综合基准测试套件