E - 水仙花数

本文介绍了水仙花数的数学定义——一个三位数,其各位数字的立方和等于其本身。程序要求找出指定范围内(m到n)的所有水仙花数,并按升序排列输出。示例中给出了在100到120以及300到380范围内的水仙花数解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。
现在要求输出所有在m和n范围内的水仙花数。 Input 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;
如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。 Sample
Input 100 120
300 380
Sample
Output
no
370 371

#include <iostream>
using namespace std;
int 
### 关于文件存储水仙花的解题思路 对于题目要求编写程序来查找并保存给定正整M和N区间内的所有三位水仙花到文件中的需求,可以按照以下逻辑构建解决方案: #### 思路解析 为了完成此任务,需要遍历指定范围内的每一个字,并判断这些字是否满足水仙花条件——即一个三位各个位置上的字立方之和等于这个本身。一旦找到符合条件的值,则将其写入预先定义好的文件中。 具体来说,在读取用户输入作为边界值之后,通过循环结构逐一检验闭合区间\[m,n\]里的自然;针对每一位候选者,分离出它的个位、十位以及百位上的字,计算这三个独立部分各自三次幂后的累加结果并与原始值对比验证身份。如果匹配成功则视为目标对象之一,并追加至输出文档里去[^1]。 #### Python代码实现 下面给出一段Python语言编写的示范性源码用于解决上述问题描述的任务: ```python def is_narcissistic(num): """ 判断num是不是水仙花 """ sum_of_cubes = 0 temp = num while temp > 0: digit = temp % 10 sum_of_cubes += digit ** 3 temp //= 10 return sum_of_cubes == num def save_narcissistic_numbers_to_file(m, n, filename=&#39;output.txt&#39;): with open(filename, &#39;w&#39;) as file: for number in range(max(100,m), min(n+1,999)+1): if is_narcissistic(number): file.write(f"{number}\n") if __name__ == "__main__": m = int(input("请输入起始值m (三位正整): ")) n = int(input("请输入结束值n (三位正整): ")) try: save_narcissistic_numbers_to_file(m, n) print("已成功将水仙花存入文件.") except Exception as e: print(f"发生错误: {e}") ``` 这段脚本首先定义了一个辅助函`is_narcissistic()`用来检测单个整是否属于水仙花类别。接着实现了主要功能`save_narcissistic_numbers_to_file()`, 它接受三个参:区间的上下限 `m` 和 `n` , 还有一个可选的目标文件名,默认设置为 `&#39;output.txt&#39;`. 此外还包含了简单的异常处理机制以应对可能发生的IO操作失败情况.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值