水仙花数是一个 3 位数,每位数字 3 次幂之和等于它本身
x 是任意自然数。若 x 是水仙花数,则函数值为 1 (真),否则为 0 (假)
输入样例1
153
输出样例1
Yes
输入样例2
582
输出样例2
No
输入样例3
1
输出样例3
No
输入样例4
1001
输出样例4
No
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
if (IsNarc(x)) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
public static boolean IsNarc(int x) {
int num = x;
int sum = 0;
while (num > 0) {
int digit = num % 10;
sum += Math.pow(digit, 3);
num /= 10;
}
return sum == x;
}
}
每个循环迭代都会修改变量 `x`,将其逐渐减小,最终变为0。
而 `originalNumber` 在循环之前就保存了最初的输入整数值,所以在比较时应该使用 `originalNumber`,而不是 `x`,因为 `x` 在循环结束后已经变为0。
int IsNarc(int x)//x 是任意自然数。若 x 是水仙花数,则函数值为 1 (真),否则为 0 (假)
{
int num = x;
int sum = 0;
while (num > 0)
{
int digit = num % 10;余10求个位
sum += Cube(digit);
num /= 10;除10去个位
}
if (sum == x)
{
return 1;
}
else
{
return 0;
}
}