zl程序教程

您现在的位置是:首页 >  后端

当前栏目

华为OD机试 -水仙花数(Java) | 机试题+算法思路+考点+代码解析 【2023】

2023-09-11 14:20:21 时间

水仙花数

题目

所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。例如153是水仙花数,153是一个3位数,并且153 = 111 + 555 + 333

输入描述:

第一行输入一个整数n,表示一个n位的正整数。n在3到7之间,包含3和7。[3,7]

第二行输入一个正整数m,表示需要返回第m个水仙花数。

输出描述:

返回长度是n的第m个水仙花数。个数从0开始编号。

若m大于水仙花数的个数,返回最后一个水仙花数和m的乘积。

若输入不合法,返回-1。

示例1

输入

3 0

输出

153

说明

153是第一个水仙花数

解题思路

我们可以在main方法中,使用Scanner类获取输入,并使用Integer.parseInt方法将字符串转换成int类型,判断输入的n是否超过7或小于3,若是,就直接输出-1,否则使用for循环和乘法操作计算begin和end,然后使用check方法检查是否满足条件,若满足条件,则count+1,并判断count是否等于m,若是,就打印j,若不是,就打印-1,最后捕获异常并打印false。此代码使用Integer.parseInt、for循环和System.out