题解 | #输出水仙花数#
输出水仙花数
http://www.nowcoder.com/practice/dabaf13009ef4d0cbf22302fd6a530a6
题意整理。
- 控制台输出所有的水仙花数。
- 水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
方法一(循环)
1.解题思路
- 遍历所有的三位数,即100-999之间所有的数。
- 如果是水仙花数,则输出。
图解展示(判断是否是水仙花数):
2.代码实现
#include <iostream>
using namespace std;
//判断一个数是否是水仙花数
bool daffodil(int x){
//获取百位数
int a=x/100;
//获取十位数
int b=x/10%10;
//获取个位数
int c=x%10;
//如果各位数字的立方和等于该数本身,则是水仙花数
return a*a*a+b*b*b+c*c*c==x;
}
int main() {
//遍历100-999之间所有的数
for(int i=100;i<1000;i++){
//如果是水仙花数,则输出
if(daffodil(i)){
cout<<i<<endl;
}
}
return 0;
}
3.复杂度分析
- 时间复杂度:判断水仙花数只需常数次计算操作,以及一次逻辑判断,时间复杂度为,总共有900个三位数要判断,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。
xqxls的题解 文章被收录于专栏
牛客题解