题目描述 如果一个三位数n � 的各位数字的立方和等于n � ,那么称n � 为水仙花数。例如153=13+53+33 153 = 1 3 + 5 3 + 3 3 ,因此153是水仙花数。 给定两个正整数a � 、b � ,输出在闭区间[a,b] [ � , � ] 内的所有水仙花数。 输入描述 两个正整数a � 、b � (100≤a≤b≤999 100 ≤ � ≤ � ≤ 999 )。 输出描述 在一行里输出闭区间[a,b] [ � , � ] 内的所有水仙花数,多个水仙花数按从小到大的顺序输出,中间用空格隔开,行末不允许有多余的空格。如果区间内没有水仙花数,那么输出NO
时间: 2024-01-20 13:03:58 浏览: 44
以下是 Python 3 实现:
```python
a, b = map(int, input().split())
result = []
for i in range(a, b+1):
s = str(i)
if i == sum([int(c)**3 for c in s]):
result.append(str(i))
if result:
print(' '.join(result))
else:
print('NO')
```
思路:
从 a 遍历到 b,对于每个数,先将它转换成字符串,然后计算每个字符的立方和。如果和等于该数本身,就说明这是一个水仙花数,将它加入结果列表中。最后判断结果列表是否为空,如果不为空,则将每个水仙花数连接成字符串输出;否则输出 NO。
相关问题
题目要求编写一个程序,输出所有水仙花数。所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。用程序编写
可以使用循环遍历所有三位数,对每个数进行立方和计算,判断是否等于该数本身。
以下是 Python 代码实现:
```python
for i in range(100, 1000):
# 拆分百位、十位、个位数字
a = i // 100
b = (i // 10) % 10
c = i % 10
# 计算立方和
sum = a**3 + b**3 + c**3
# 判断是否等于该数本身
if sum == i:
print(i)
```
程序输出的结果是:
```
153
370
371
407
```
因此,所有的水仙花数是 153、370、371、407。
c语言求一个三位数各位数立方之和(用函数实现),并判断该数是否为水仙花数
好的,这是一个比较简单的题目,以下是实现代码:
```c
#include <stdio.h>
#include <math.h>
// 计算三位数各位数立方之和
int cubeSum(int num) {
int sum = 0;
while (num) {
int digit = num % 10;
sum += pow(digit, 3);
num /= 10;
}
return sum;
}
// 判断是否为水仙花数
int isNarcissisticNumber(int num) {
int sum = cubeSum(num);
return sum == num;
}
int main() {
int num;
printf("请输入一个三位数:");
scanf("%d", &num);
if (num >= 100 && num <= 999) {
printf("各位数立方之和为:%d\n", cubeSum(num));
if (isNarcissisticNumber(num)) {
printf("%d是水仙花数\n", num);
} else {
printf("%d不是水仙花数\n", num);
}
} else {
printf("输入不合法\n");
}
return 0;
}
```
其中,`cubeSum`函数用于计算三位数各位数立方之和,`isNarcissisticNumber`函数用于判断是否为水仙花数。在`main`函数中,我们先通过`scanf`函数输入一个三位数,再判断是否在范围内,最后输出结果。