官方解答 · 置頂Java
官方解答|數字拆位紀錄
官方解答|數字拆位紀錄
解題思路
先取 n 的絕對值。do-while 每輪用 % 5 取得最低位,再用 / 5 移除該位,依由低至高的順序計算位數平方和。直接回傳統計結果,不還原負號。
正確性與邊界
do-while 保證 n=0 仍執行一輪;唯一位數為 0。拆位階段只處理絕對值;最後的符號或位數調整依題意執行。
複雜度
時間 O(log_5(max(1, |n|))),額外空間 O(1)。
公開範例
輸入 {"n": 1},依上述步驟得到 1。
下方程式可直接取代起始碼;使用 Java 11,入口為 Solution.solve。
CodeSprout 官方解答 · 題意分析、解題步驟與完整參考程式
import java.util.*;
public class Solution {
public static int solve(int n) {
int value = Math.abs(n), answer = 0, index = 0;
do {
int digit = value % 5;
answer += digit*digit;
value /= 5;
index++;
} while (value != 0);
return answer;
}
}
留言討論 0
登入 後就能留言,一起討論不同的寫法。