题解 | #输出水仙花数#

输出水仙花数

http://www.nowcoder.com/practice/dabaf13009ef4d0cbf22302fd6a530a6

题意整理。

  • 控制台输出所有的水仙花数。
  • 水仙花数是指一个三位数,其各位数字的立方和等于该数本身。

方法一(循环)

1.解题思路

  • 遍历所有的三位数,即100-999之间所有的数。
  • 如果是水仙花数,则输出。

图解展示(判断是否是水仙花数): alt

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.复杂度分析

  • 时间复杂度:判断水仙花数只需常数次计算操作,以及一次逻辑判断,时间复杂度为O(1)O(1),总共有900个三位数要判断,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务