给定一个三位数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