入门+ · 数位逻辑

水仙花数

153 = 1³ + 5³ + 3³——一个数如果等于“各位数字按位数次方再求和”就成立。三位数的情况就是立方。

题目

输入:一个整数 n(0 ≤ n ≤ 999)。

输出:如果 n 等于各位数字的立方和,打印 Yes,否则 No。

样例:

输入输出
153Yes
100No

你的解答

Program.cs — 你的解答
"用我的输入试跑"的自定义输入

判题完全在你的浏览器里对隐藏测试运行。代码随打随存(本地)。Ctrl+Enter 判题。

卡住了?提示

提示 1 —— 拆位再立方

和数位和同一个循环,只是累加的从 digit 变成 digit * digit * digit。记得留住原值做最后比较。

提示 2 —— 已知答案

三位水仙花数只有 153、370、371、407 这四个。如果你的代码和这四个对不上,问题在累加,不在比较。

解答(先自己试!)
int n = int.Parse(Console.ReadLine());
int orig = n, sum = 0;
while (n > 0)
{
    int digit = n % 10;
    sum += digit * digit * digit;
    n = n / 10;
}
Console.WriteLine(sum == orig ? "Yes" : "No");

注意那个谨慎的 orig 备份——循环会摧毁 n,和回文数一模一样。下一题:矩阵对角线求和。