四叶玫瑰数
描述
四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。
给定两个正整数N和M,请将N~M(1≤N≤M≤1000000)之间(含N和M)的四叶玫瑰数按从小到大的
顺序输出。
例如:N=1234,M=2345时,有一个四叶玫瑰数1634,因为1^4 + 6^4 + 3^4 + 4^4 =
1634,故输出1634。
输入
第一行输入两个正整数N、M(1≤N≤M≤1000000)
输出
输出一行,包含若干个用一个空格隔开的正整数,表示N~M之间的四叶玫瑰数按从小到大的顺序的输出结果
输入样例 1
1234 2345
输出样例 1
1634
提示
题目数据保证给定的N~M范围内至少有一个四叶玫瑰数
#include <iostream>
#include <cmath>
using namespace std;
bool isRoseNumber(int num) {
int sum = 0, original = num, digit;
while (num > 0) {
digit = num % 10;
sum += pow(digit, 4);
num /= 10;
}
return sum == original;
}
int main() {
int N, M;
cin >> N >> M;
bool found = false;
for (int i = N; i <= M; ++i) {
if (isRoseNumber(i)) {
if (found) {
cout << " ";
}
cout << i;
found = true;
}
}
return 0;
}