A37455. 四叶玫瑰数
填空题
困难
知识点
题目描述
四叶玫瑰数
题目描述:
编程实现: 四叶玫瑰数
四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。给定两个正整数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之间的四叶玫瑰数按从小到大的顺序的输出结果
注意:
题目数据保证给定的N~M范围内至少有一个四叶玫瑰数
样例输入
1234 2345
样例输出
1634
参考答案
#include <bits/stdc++.h>
using namespace std;
//函数定义,指算四位数个个数位的四次方之和
int f (int o) {
int q = o / 1000, b = o % 1000 / 100, s = o % 100 / 10, g = o % 10;//分解个个位
return pow(q, 4) + pow(b, 4) + pow(s, 4) + pow(g, 4);
}
int main() {
int n, m;
cin >> n >> m;
if (n < 1000 && m <= 9999) {
for (int i = 1000; i <= m; i++) {
if (f(i) == i)
cout << i << " ";
}
} else if (m <= 9999) {
for (int i = n; i <= m; i++) {
if (f(i) == i)
cout << i << " ";
}
} else {
for (int i = n; i <= 9999; i++) {
if (f(i) == i)
cout << i << " ";
}
}
return 0;
}答案解析
评分标准:
5分:能正确输出第一组数据;
5分:能正确输出第二组数据;
5分:能正确输出第三组数据;
5分:能正确输出第四组数据;
5分:能正确输出第五组数据:
5分:能正确输出第六组数据:
5分:能正确输出第七组数据
5分:能正确输出第八组数据:
上一题
下一题