【问题描述】 一个三位的十进制整数,如果它的三个数位的数字立方和等于这个数的数值,则称它为一个“水仙数”。编写程序,计算出某一范围内的所有“水仙数”。 【输入形式】 从控制台输入两个整数(以空格分割),分别表示数据范围的下限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 14:04:11 浏览: 129
这里提供一种简单的实现方法:
```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"。
相关问题
一个三位的十进制整数,如果它的三个数位的数字立方和等于这个数的数值则称,它为一个水仙数编写程序计算出某一范围内的所有水仙数
水仙数是指那些其各位数字立方之和等于原数本身的正整数。例如,153是一个水仙数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
要编写一个程序来找出某个范围内的水仙数,可以采用以下步骤:
1. 定义一个函数,接受一个整数作为输入。
2. 将输入的数分解成百位、十位和个位。
3. 计算这三个数字分别的立方和。
4. 比较立方和是否与原始数相等,如果是,则记录这个数并继续搜索下一个。
5. 循环遍历给定范围内的所有三位数。
这是一个简单的Python示例:
```python
def find_water_lilies(start, end):
water_lilies = []
for num in range(start, end+1): # 包含end
hundreds = num // 100
tens = (num % 100) // 10
ones = num % 10
cube_sum = hundreds**3 + tens**3 + ones**3
if cube_sum == num:
water_lilies.append(num)
return water_lilies
# 使用例子
start_range = 100 # 范围开始
end_range = 999 # 范围结束
water_lilies_in_range = find_water_lilies(start_range, end_range)
print("在{}到{}范围内的水仙数有:{}".format(start_range, end_range, water_lilies_in_range))
一个三位的十进制整数,如果它的三个数位的数字立方和等于这个数的数值,则称它为一个“水仙数”。编写程序,计算出某一范围内的所有“水仙数”。
"水仙数"是指一个三位数,其各位数字的立方之和恰好等于该数字本身。例如,153就是一个水仙数,因为1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
编写这样的程序通常涉及到遍历指定范围内(比如从100到999)的所有三位数,然后检查每个数是否满足水仙数条件。下面是一个简单的Python示例:
```python
def find_pythagorean_triplets(start, end):
for num in range(start, end+1):
if len(str(num)) != 3 or int(str(num)[0]) < 1 or int(str(num)[0]) > 9:
continue
a = int(str(num)[0])
b = int(str(num)[1])
c = int(str(num)[2])
# 水仙数条件:a^3 + b^3 + c^3 == num
if a**3 + b**3 + c**3 == num:
print(f"{num} 是一个水仙数")
# 范围内的水仙数搜索,例如从100到999
find_pythagorean_triplets(100, 999)
```
当你运行这段代码,它会打印出指定范围内的所有水仙数。如果你需要更改范围,只需修改`find_pythagorean_triplets`函数的参数即可。
阅读全文
相关推荐















