题目链接:https://www.lanqiao.cn/problems/4145/learning/?isWithAnswer=true
题目描述:
鸡哥是一位著名的糕点师傅,他特别擅长做各种形状的蛋糕。他有一种特殊的蛋糕制作方法,那就是在蛋糕上开洞。有一天,他想到一个有趣的想法:不同的数字可以代表蛋糕上的洞的数量。例如,数字0、6、和9各代表一个洞,数字8代表两个洞,其他数字则代表没有洞。鸡哥正在进行一个新的蛋糕制作挑战,他需要在一个给定的数字区间[A,B]中,找出一个数字,这个数字的各位数字对应的洞的总数最多。如果有多个数字的洞的总数相同,鸡哥会选择最小的那个数字。你能帮助鸡哥完成这个挑战吗?
输入格式:
输入的第一行包含两个整数 A和 B(0≤ A≤ B≤10**5)。
输出格式:
输出一行,包含一个整数,表示在区间[A,B]中,各位数字对应的洞的总数最多的数字如果有多个数字的洞的总数相同,输出最小的那个数字。
样例输入:
10 100
样例输出:
88
题目解决:
import os
import sys
# 请在此输入您的代码
a, b = list(map(int, input().split()))
count = 0
def pd(i):
s = 0
while i:
count = i % 10
if count == 0 or count == 6 or count == 9:
s += 1
elif count == 8:
s += 2
i = i // 10
return s
m = 0
index = 0
for i in range(a, b + 1):
count = pd(i)
if count > m:
m = count
index = i
print(index)
总结:
思路是求区间内整数中各个位置的数字,当数字满足条件时,记录该数的洞数;与此同时,更新最大洞数值及其索引值。