入門+ · 數位邏輯

水仙花數

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,和迴文數一模一樣。下一題:矩陣對角線求和。