百年一更
oj-3329 四叶玫瑰数
描述
四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。
给定两个正整数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范围内至少有一个四叶玫瑰数
四叶玫瑰数,一听,好难!
其实做起来还是怪简单的嘞~(只要你不手残)
在题目的描述中出现了次方,所以我们需要用到pow也就是次方函数
导入cmath函数库
输入两个数,输出区间内的四叶玫瑰数
cin >> a >> b;
for(int i=a;i<=b;i++)
然后我们来计算区间内每一个数是否符合四叶玫瑰数的要求
故最后只需要使用替身temp去实现while拆分数位再来计算每一位数字的总和即可
temp替身代码展示 :
int temp=i;
long long sum=0;
while(temp){
sum+=pow(temp%10,4);
temp/=10;
}
判断代码展示:
if(sum==i) cout << i << " ";
最终成品:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a,b,sum=0;
cin>>a>>b;
for(int i=a;i<=b;i++){
int temp=i;
sum=0;
while(temp){
sum+=pow((temp%10),4);
temp/=10;
}if(sum==i){
cout<<sum<<" ";
}
}
return 0;
}