今天刷题时遇到个问题:春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他
是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如: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;
}