【Python 小学低段竞赛数学题】数字5在书本页码中出现16次,这本书最多有多少页

书的页码编号是按1 2 3 4 5一直这样下去的,数字5恰好出现了16次,请问这本书最多可以有多少页?

包含5的页码: 5 15 25 35 45 50 51 52 53 54 55 56 57 58 59 65

需要注意页码55,出现了两次5。因此到59页就满足数字5出现了16次。且59页是书本最少总页数。最多总页数要往17次算出页数65,65页刚好第一次满足出现17次数字5,所在64页就是数字5出现16次的书本最多总页数。

python 复制代码
def page_num_count(specify_number: int, set_times: int) -> tuple[int, int, list[int]]:
    page_num = 1
    num_count = 0  # 记录5出现的总次数
    list_specify_number = []  # 包含指定数字的页码,组成列表。
    while True:
        count = str(page_num).count(str(specify_number))  # 统计5在当前页码中出现的次数
        if count > 0:
            num_count += count  # 当前页码有5,将次数累加进总次数中
            list_specify_number.append(page_num)
        if num_count == set_times:
            break
        page_num += 1
    return page_num, num_count,list_specify_number


page_num, num_count, list_specify_number = page_num_count(5, 16)

print(f"5出现的总次数:{num_count}")  # 5出现的总次数:16
print(f"最少:{page_num}页。")  # 最少:59页。
print(f"包含5的页码:", *list_specify_number)  # 包含5的页码: 5 15 25 35 45 50 51 52 53 54 55 56 57 58 59


page_num, num_count, list_specify_number = page_num_count(5, 17)  # 共出现16次,可能的最多页数,要按17次算,将刚满足17次的页码减1,即是16次最多页数。

print(f"按17次算,包含5的页码:", *list_specify_number)  # 按17次算,包含5的页码: 5 15 25 35 45 50 51 52 53 54 55 56 57 58 59 65
print(f"最多:{page_num-1}页。")  # 最多:64页。
相关推荐
鱼鱼说测试7 分钟前
Jenkins+Python自动化持续集成详细教程
开发语言·servlet·php
AntBlack19 分钟前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
艾莉丝努力练剑37 分钟前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
CHEN5_021 小时前
【Java基础面试题】Java基础概念
java·开发语言
武昌库里写JAVA2 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
杜子不疼.2 小时前
《Python学习之字典(一):基础操作与核心用法》
开发语言·python·学习
小幽余生不加糖3 小时前
电路方案分析(二十二)适用于音频应用的25-50W反激电源方案
人工智能·笔记·学习·音视频
落霞的思绪3 小时前
Java设计模式详细解读
java·开发语言·设计模式
阿巴~阿巴~3 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
..过云雨3 小时前
01.【数据结构-C语言】数据结构概念&算法效率(时间复杂度和空间复杂度)
c语言·数据结构·笔记·学习