求兩數之和的十進制位數。傳統方法用循環除 10 計數,但 log10 可 O(1) 解決。
log10(x) 返回 x 的以 10 為底對數。
- log10(100) = 2 → 3 位數
- log10(999) ≈ 2.999 → 取整得 2 → 3 位數
公式:位數 = (int)log10(x) + 1 (x > 0)
#include
#include
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) {
int sum = a + b;
int digits = (sum == 0) ? 1 : (int)log10(sum) + 1;
cout << digits << endl;
}
return 0;
}
log10(0) 未定義,需特判(int)(log10(x) + 1e-10) + 1log2()、log10l() (long double)、log10f() (float)善用數學庫函數能大幅簡化代碼。