题目
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
分析
没有什么难度,暴力求解即可。注意格式的控制。本次采取一个vector记录数字,最后再调输出格式。
代码
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
int main(){
int num1;
int num2;
while(cin >> num1 >> num2){
// 只需要求出一次三个数字,之后加上1就可以了。
vector<int> flower_num;
int start = num1;
while(start <= num2){
int a, b, c;
c = num1 % 10;
num1 = num1 / 10;
b = num1 % 10;
num1 = num1 / 10;
a = num1 % 10;
int sum = pow(a, 3) + pow(b, 3) + pow(c, 3);
int num = a * 100 + b * 10 + c;
if(sum == num){
flower_num.push_back(num);
}
start++;
num1 = start;
}
if(flower_num.size() == 0){
cout << "no" << endl;
}
else{
int end_num = flower_num.back();
flower_num.pop_back();
for(int num: flower_num){
cout << num << ' ';
}
cout << end_num << endl;
}
}
}
总结
暴力求解,没有难度。