LOADING

加载过慢请开启缓存 浏览器默认开启

C++经典例题-水仙花数

2024/10/27 教程 C++

水仙花数

什么是水仙花数?

水仙花数是指一个 3 位数,它的每个数位上的数字的 3 次幂之和等于它本身的一个数

例:
1^3 + 5^3+ 3^3 = 153

解题思路

我们需要对每个三位数进行拆分计算,将符合水仙花数的数输出到控制台
对于所有三位数,我们可以知道,是 100~999 之间的数字
可以使用 for 循环或者 while循环解题

for 循环

for (int i = 100; i <= 999; i++)
{
}

while 循环

int j = 100;
while (j != 1000)
{
    j++;
}

拆解数字

三位数的表示搞定了,那数字拆分呢?
很简单,只需要使用运算符就能解决就行

获取百位

int num_100 = i / 100;

获取十位

int num_10 = i % 100 / 10;

获取个位

int num_1 = i % 100 % 10;

这样就实现了对每个三位数各个位置的数的获取

接下来就是求这三个数的 3 次幂之和了

int sum = (num_100 * num_100 * num_100) + (num_10 * num_10 * num_10) + (num_1 * num_1 * num_1);;

求完和,就到了对比环节,使用 if 判断句进行判断,若相同就输出,不相同不进行任何操作

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

运行结果:
shuixianhuashu

至此,程序完成!

完整代码:

#include <iostream>
using namespace std;
int main()
{
    for (int i = 100; i <= 999; i++)
    {
        int num_100 = i / 100;
        int num_10 = i % 100 / 10;
        int num_1 = i % 100 % 10;

        int sum = (num_100 * num_100 * num_100) + (num_10 * num_10 * num_10) + (num_1 * num_1 * num_1);;
        if (sum == i)
        {
            cout << i << endl;
        }
    }
    /*int j = 100;
    while (j != 1000)
    {
        j++;
    }*/
    system("pause");
    return 0;
}