关于#c++#的问题,如何解决?

今天刷题时遇到个问题:春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他
是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现在要求输出所有在 m 和 n 范围内的水仙花数。

我的代码:

#include 
#include 
#include 
using namespace std;
int main ()
{
    long long ge,shi,bai,m,n;cin>>m>>n;
    for (int i=m;i<=n;i++)
    {
        ge=i%10;
        shi=(i/10)%10;
        bai=i/100;
        if ((ge*ge*ge)+(shi*shi*shi)+(bai*bai*bai)==i)
    {
        cout<" ";
    } 
    }
    return 0;
    }#include 
#include 
#include 
using namespace std;
int main ()
{
    long long ge,shi,bai,m,n;cin>>m>>n;
    for (int i=m;i<=n;i++)
    {
        ge=i%10;
        shi=(i/10)%10;
        bai=i/100;
        if ((ge*ge*ge)+(shi*shi*shi)+(bai*bai*bai)==i)
    {
        cout<" ";
    } 
    }
    return 0;
    }

结果45.45分。
谁可以告诉我正确代码。

“该回答引用ChatGPT”
参考下面的代码:
可行还望采纳:

#include<iostream>
#include<cmath>

using namespace std;

bool isNarcissisticNumber(int num) {
    int originalNum = num;
    int result = 0;
    int n = log10(num) + 1;
    while (num != 0) {
        int digit = num % 10;
        result += pow(digit, n);
        num /= 10;
    }
    return result == originalNum;
}

int main() {
    int m, n;
    cin >> m >> n;
    for (int i = m; i <= n; i++) {
        if (isNarcissisticNumber(i)) {
            cout << i << " ";
        }
    }
    return 0;
}


修改如下,改动处见注释,供参考:

#include <iostream>
//#include <bits/stdc++.h> 修改
//#include <cmath>         修改
using namespace std;
int main()
{
    int  ge, shi, bai, m, n, flg = 0;  //long long 修改
    do {
        cin >> m >> n;
    } while (m < 100 || m > 999 || n < 100 || n > 999); //修改
    if (m > n) m += n, n = m - n, m = m - n;            //修改
    for (int i = m; i <= n; i++)
    {
        ge = i % 10;
        shi = (i / 10) % 10;
        bai = i / 100;
        if ((ge * ge * ge) + (shi * shi * shi) + (bai * bai * bai) == i)
        {
            flg = 1;                                  //修改
            cout << i << " ";
        }
    }
    if (!flg)                                        //修改
        cout << "No";
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[6];
int main()
{
    a[1]=153;
    a[2]=370;
    a[3]=371;
    a[4]=407;
    cin>>n>>m;
    for(int i=1;i<=4;i++)
    {
        if(a[i]>=n&&a[i]<=m)
        {
            cout<<a[i]<<endl;
        }
    }
    return 0;
}

(楼主都写了万能头为啥还要写iostream和cmath呢?)


#include<iostream>
#include<ctime>
using namespace std;
int main()
{
    int m, n;
    cin >> m >> n;
    if(m < 100) m = 100;
    if(n > 999) n = 999; 
    for(int i = m; i <= n; i ++)//使用for循环遍历所有的三位数
    {
        int a = 0,b=0,c=0;//定义三个变量a,b,c,分别表示三位数的个位,十位,百位
        a = i % 10;
        b = i / 10 % 10;
        c = i / 100;
        if(a*a*a+b*b*b+c*c*c==i)
        cout << i << endl;//条件满足即输出该三位数
    }
    
//    system("pause");
    return 0;
}