青训营X豆包MarsCode AI刷题-4 | 豆包MarsCode AI 刷题

36 阅读2分钟

题解:计算区间内的完美整数数量

问题描述

一个整数如果由相同的数字构成,则称为完美整数。例如:

  • 1、11、333 是完美整数。
  • 12、19、101 是不完美整数。

现在,你需要计算给定区间 [x, y] 中有多少个整数是完美整数。

关键点

  1. 完美整数的定义

    • 一个整数如果由相同的数字构成,则称为完美整数。
    • 例如,1、11、333 是完美整数,而 12、19、101 不是。
  2. 区间内的完美整数数量

    • 需要遍历区间 [x, y] 中的每个整数,判断其是否为完美整数。

解决方案

我们可以通过以下步骤来解决这个问题:

  1. 判断一个整数是否为完美整数

    • 将整数转换为字符串。
    • 检查字符串中的所有字符是否相同。
  2. 遍历区间内的每个整数

    • xy 遍历每个整数。
    • 使用上述方法判断每个整数是否为完美整数。
    • 统计完美整数的数量。
  3. 返回结果

    • 返回统计的完美整数数量。

代码实现

def is_perfect_integer(n):
    # 将整数转换为字符串
    s = str(n)
    # 检查字符串中的所有字符是否相同
    return all(c == s[0] for c in s)

def solution(x, y):
    count = 0
    # 遍历区间 [x, y] 中的每个整数
    for num in range(x, y + 1):
        if is_perfect_integer(num):
            count += 1
    return count

# 测试样例
print(solution(1, 10))  # 输出:9
print(solution(2, 22))  # 输出:10

总结

通过遍历区间内的每个整数,并判断其是否为完美整数,我们可以高效地计算出区间内的完美整数数量。每次判断一个整数是否为完美整数时,将其转换为字符串并检查所有字符是否相同。最终得到的 count 即为区间内的完美整数数量。