輸入一個 n 位整數(n≥2),返回其後 n-1 位組成的數。例如輸入 12345,返回 2345。
unsigned fun(int w) {
int a = w, i = 1;
while (a == 0) { // 條件錯誤:a 為 0 才進入,實際應為 a != 0
a = a / 10;
i++;
}
w = w % pow(10, i);
return w;
}
邏輯錯誤導致位數計算失效,且 pow 返回 double 可能引發精度問題。
int fun(int n) {
int nn = n;
int r = 1;
while (nn >= 10) { // 計算 10^(位數-1)
r *= 10;
nn /= 10;
}
return n % r; // 取模得到後 n-1 位
}
此法僅用整數運算,無浮點誤差,時間複雜度 O(log n),適用於所有正整數。