本文共 894 字,大约阅读时间需要 2 分钟。
为了解决这个问题,我们需要计算在给定的区间 [n, m] 内,不含有不吉利数字的数字的数量。不吉利数字定义为包含数字 4 或连续出现 62 的数字。
我们可以使用暴力枚举的方法来解决这个问题。具体步骤如下:
这种方法的时间复杂度是 O((m - n + 1) * len(str(m))),其中 len(str(m)) 是数字的位数。由于题目给出的 m 的最大值为 10^6,这种方法在 Python 中是可行的。
import sysdef count_valid(n, m): count = 0 for x in range(n, m + 1): s = str(x) if '4' in s or '62' in s: continue count += 1 return countn, m = map(int, sys.stdin.readline().split())while True: line = sys.stdin.readline() if not line: break n, m = map(int, line.strip().split()) if n == 0 and m == 0: break print(count_valid(n, m))
sys.stdin.readline 读取输入,直到遇到两个连续的 0 时结束循环。count_valid:遍历区间 [n, m] 内的每个数字,检查其是否包含 4 或 62。如果不包含,则计数器加一。这种方法直接且简洁,能够在给定的约束条件下高效地解决问题。
转载地址:http://gubp.baihongyu.com/