测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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分:能正确输出第八组数据:

上一题 下一题