题目描述:如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。 例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数 输入描述:输入一个整数a与一个整数b, 用空格分隔 输出描述:输出a到b区间内的水仙花数
时间: 2024-03-06 12:48:28 浏览: 54
好的,我明白了。这是一个关于水仙花数的问题。以下是解法:
```
#include <iostream>
#include <cmath>
using namespace std;
// 计算一个数的位数
int getDigits(int num) {
int cnt = 0;
while (num) {
cnt++;
num /= 10;
}
return cnt;
}
// 判断一个数是否为水仙花数
bool isNarcissistic(int num) {
int sum = 0;
int temp = num;
int digits = getDigits(num);
while (temp) {
int digit = temp % 10;
sum += pow(digit, digits);
temp /= 10;
}
return sum == num;
}
int main() {
int a, b;
cin >> a >> b;
for (int i = a; i <= b; i++) {
if (isNarcissistic(i)) {
cout << i << " ";
}
}
cout << endl;
return 0;
}
```
输入两个整数a和b,然后依次遍历a到b之间的每一个整数,判断是否为水仙花数,如果是,就输出该数。
注意,本解法中的isNarcissistic函数用于判断一个数是否为水仙花数。具体实现是先计算该数的位数,然后依次取出每一位数字,求出它们的幂和,最后判断该幂和是否等于原数即可。
希望这个解法能够帮到你!
阅读全文