描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。

输入描述:
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)
输出描述:
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出no;每个测试实例的输出占一行。

获得一行中的字符串将它们转换为int类型,再将每个数字的个位十位百位切出来,分别使用pow函数加在一起来对比原来的数字。

while True:
    try:
        m, n = map(int, input().split()) # 将行内数字转换成整形
        lis = []
        for num in range(m, n + 1):
            one = num // 100 # 个位
            two = num // 10 % 10 # 十位
            three = num % 10 # 百位

            if num == pow(one, 3) + pow(two, 3) + pow(three, 3):
                lis.append(str(num)) # 这里转换成字符串是为了后面join

        if len(lis) == 0:
            print("no")
        else:
            print(" ".join(lis))
    except:
        break

可以将取位数那里的整除数运算换成字符串切片,将这一段改成

   for num in range(m, n + 1):
      num_str = str(num)
      one = int(num_str[-1]) # 个位
      two = int(num_str[-2]) # 十位
      three = int(num_str[-3]) # 百位
posted on 2024-02-29 11:18  逢考必过好吗秋梨膏  阅读(36)  评论(0)    收藏  举报