东方博宜1058 - 求出100至999范围内的所有水仙花数。

问题描述

所谓水仙花数,就是指各位数字立方之和等于该数的数;a^3  称为 a 的立方,即等于 a×a×a 的值。
例如:因为 153=1^3 +5^3 +3^3  ,所以 153 是一个水仙花数。

输入

输出

若干行,每行一个整数,表示该范围内的所有水仙花数。
按从小到大的顺序输出。

代码

水仙花数是指一个 n 位数(n≥3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。

在这个问题中,我们只需要考虑三位数的水仙花数,因为题目中给出的例子是 153,暗示我们只需要考虑三位数。

我们可以通过以下步骤来找到所有的三位水仙花数:

  1. 遍历所有三位数(从 100 到 999)。
  2. 对于每一个数,将其各位数字分离出来。
  3. 计算每个数字的立方和。
  4. 如果立方和等于原数,则该数是水仙花数,输出该数。

下面是实现这个逻辑的 C++ 代码:

#include <iostream>
using namespace std;

int main() {
    for (int num = 100; num <= 999; ++num) {
        int sum = 0;
        int temp = num;
        
        // 分离各位数字并计算立方和
        while (temp > 0) {
            int digit = temp % 10;
            sum += digit * digit * digit;
            temp /= 10;
        }
        
        // 判断是否为水仙花数
        if (sum == num) {
            cout << num << endl;
        }
    }
    return 0;
}

代码解释

  1. 遍历所有三位数

    for (int num = 100; num <= 999; ++num) {
    

    从 100 到 999 遍历每一个三位数。

  2. 分离各位数字并计算立方和

    int sum = 0;
    int temp = num;
    
    while (temp > 0) {
        int digit = temp % 10;
        sum += digit * digit * digit;
        temp /= 10;
    }
    

    使用 temp 变量来分离 num 的各位数字,并计算每个数字的立方和。

  3. 判断是否为水仙花数

    if (sum == num) {
        cout << num << endl;
    }
    

    如果立方和等于原数,则输出该数。

    输出结果

    运行上述代码,将会输出所有三位数的水仙花数,按从小到大的顺序:

    153
    370
    371
    407
    

    这些数分别是 153、370、371 和 407,它们都是三位数的水仙花数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值