【问题描述】 一个三位的十进制整数,如果它的三个数位的数字立方和等于这个数的数值,则称它为一个“水仙数”。编写程序,计算出某一范围内的所有“水仙数”。 【输入形式】 从控制台输入两个整数(以空格分割),分别表示数据范围的下限m和上限n,且满足0<=m<=n<=10000。 【输出形式】 向控制台输出在该数据范围内(包括数据的上下限)的所有“水仙数”,以从小到大的顺序显示在一行上,各数之间以空格分割。若该数据范围内没有“水仙数”,则输出字符串No Answer。 【样例输入1】 50 370 【样例输出1】 153 370 【样例1说明】 输入的数据范围下限为50,上限为370。因为要求水仙数为三位数,所以实际上就是求100~370之间的 水仙数,由于13 + 53 + 33 = 153,33 + 73 + 03 = 370,因此该范围内的水仙数为153和370(包括上限370)。 【样例输入2】 110 150 【样例输出2】 No Answer 【样例2说明】 输入的数据范围下限为110,上限为150。因为该数据范围之间没有水仙数,所以输出字符串No Answer。通过C语言实现,写出源代码
时间: 2024-02-17 18:04:11 浏览: 93
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
这里提供一种简单的实现方法:
```c
#include <stdio.h>
int isNarcissistic(int n) {
int sum = 0, temp = n;
while (temp != 0) {
int digit = temp % 10;
sum += digit * digit * digit;
temp /= 10;
}
return sum == n;
}
int main() {
int m, n;
scanf("%d%d", &m, &n);
int found = 0;
for (int i = m; i <= n; i++) {
if (isNarcissistic(i)) {
printf("%d ", i);
found = 1;
}
}
if (!found) {
printf("No Answer");
}
return 0;
}
```
首先定义一个 `isNarcissistic` 函数判断一个数是否是水仙数:将其每个数位的立方和计算出来,判断是否与原数相等。然后在主函数中读入输入,依次遍历范围内的每个数,若是水仙数则输出,最后若没有找到水仙数则输出 "No Answer"。
阅读全文