PTA - 编写函数判断水仙花数

给定一个三位数n,要求编写函数isflower(n)判断n是否为水仙花数,如果是,则返回True,否则返回False。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。

函数接口定义:

在这里描述函数接口。例如:
isflower (n)

其中 n 是传入的参数,表示需要判断的三位数。 n 的值的范围为[100,999]。

裁判测试程序样例:

/* 请在这里填写答案 */

n = eval(input())
if isflower(n)==True:
    print('Yes')
else:
    print('No') 

输入样例:

在这里给出一组输入。例如:

371

输出样例:

在这里给出相应的输出。例如:

Yes

我的答案:

1.常规思路:由于题目说了是三位数,所以一直循环取余就可以得到末尾数字,用一个变量sum来保存digit^3(我这里其实用的变量不太好,因为python中有个函数也叫sum),最后判断sum是否等于传入的n就行了

def isflower (n):
    tmp = n
    sum = 0
    while(tmp > 0):
        digit = tmp % 10
        tmp //= 10
        sum += digit ** 3
    if (sum == n):
        return True
    else:
        return False

2.特殊思路:由于题目已经说了取值范围在[100, 999] ,所以完全可以直接对数的各位求三次方再求和来得到答案,这种方法仅仅针对于三位数有效

def isflower (n):
    digit1 = n % 10
    digit2 = n // 10 % 10
    digit3 = n // 100
    #print(digit1, digit2, digit3)

    if (digit1**3 + digit2**3 + digit3**3 == n):
        return True
    else:
        return False

    #return True if digit1**3 + digit2**3 + digit3**3 == n else False

  • 29
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值