首页 > 试题广场 >

水仙花数

[编程题]水仙花数
  • 热度指数:694 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
打印出所有的三位“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。

输入描述:


输出描述:
打印符合题目要求的数字,以换行隔开,例如:
1
3
5
6
for i in range(100,1000):
    i_str=str(i)
    num=0
    for j in i_str:
        num+=int(j)*int(j)*int(j)
    if i==num :
        print (i)
发表于 2021-08-17 12:35:41 回复(1)
#include <stdio.h>

int sqa_3(const int input)  //分装n^3函数
{
    return input * input * input;
}

int judge_shuixian_num(const int i)
{
    int num1 = i / 100;
    int num2 = i / 10 - num1 * 10;
    int num3 = i % 10;
    if ((i % 2) == ((num1 % 2 + num2 % 2 + num3 % 2) % 2))   //通过奇偶性排除部分数
        if (i == sqa_3(num1) + sqa_3(num2) + sqa_3(num3))
            return 1;
    return 0;
}

int main()
{
    int i = 100;
    for (i = 100; i < 1000; i++)
    {
        int ret = judge_shuixian_num(i);
        if (ret == 1)
        {
            printf("%d\n", i);
        }
    }

    return 0;
}
发表于 2022-09-11 23:27:55 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        for(int i=100;i<1000;i++){
            //分别把百位、十位、个位数取出来
            int a = i/100;
            int b = (i%100)/10;
            int c = (i%100)%10;
            if(a*a*a+b*b*b+c*c*c==i){
                System.out.println(i);
            }
        }
    }}
编辑于 2024-01-06 17:22:02 回复(0)
for n in range(100,1000):
    n1 = int(str(n)[0])
    n2 = int(str(n)[1])
    n3 = int(str(n)[2])
    if n1*n1*n1+n2*n2*n2+n3*n3*n3 == n:
        print(n)
发表于 2022-08-16 21:18:09 回复(0)
#include<iostream>
using namespace std;
int cubesum(int a){
    int b=a%10;
    int c=(a%100-b)/10;
    int d=a/100;
    int cubesum=b*b*b+c*c*c+d*d*d;
    return cubesum;}
int main(){
    for(int i=100;i<1000;i++){
        if(i==cubesum(i)){
            cout<<i<<endl;
        }
}
    }
发表于 2021-08-18 12:05:28 回复(0)