加强版水仙花数

该编程题要求找到小于给定数N的所有超完全数字不变数,即每个数字的位数的n次方之和等于其本身。代码通过循环遍历,计算每位数字的n次方并求和,判断是否满足条件。示例中给出了1000作为输入,输出了四个符合条件的数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

恒生电子编程题:
超完全数字不变数,例如3位数,153,1^3 + 5^3 + 3^3 =153,这样的数叫水仙花数,4位数例如:1634,1^4 + 6^4 + 3^4 + 4^4 = 1634,这样的数叫四叶玫瑰数,由此规律,此类数称作超完全数字不变数,任意输入一个数字N,求比它小的,并大于10的超完全数字不变数

测试用例:
输入:

1000

输出:

407
371
370
153

解题代码:

import java.util.Scanner;
public class FlowerNum {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        print(num);
    }

    static void print(int num){

        for (int i = num; i > 10; i--) {
            //计算这是一个几位数
            int copy_num = i;
            int count_num = 0;
            while(copy_num >= 1){
                copy_num /= 10;
                count_num++;
            }
            //计算每一位上的值x,再count_num次方,求和sum比较
            int x = 0;
            int sum = 0;
            int copy_i = i;
            while(copy_i >= 1){
                x = copy_i % 10;
                sum += (int)Math.pow(x,count_num);
                copy_i /= 10;
            }
            if(sum == i){
                System.out.println(i);
            }
        }

    }
}

解题思路:从N开始循环减,到N>10,循环遍历数为 i
①先求出 i 是一个几位数,设为n。
②求出当前 i 的每一位,并求它的n次方。
③将每一位的n次方加起来,得到sum
④使用 sumi 比较,若相等,则 i 为超完全数字不变数。

需要注意的是,不能一开始就求N是几位数,必须求当前数是几位数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值