d171 - 飛蛾撲火(二)
題目描述
題目要求計算給定整數 N 的 M 次方,並輸出結果的位數。
解題思路
計算 N 的 M 次方,然後計算結果的位數。由於直接計算 N 的 M 次方可能會導致整數溢出,因此使用對數來避免溢出。 N 的 M 次方等於 10 的 (M * log10(N)) 次方。 因此,N 的 M 次方的位數等於 floor(M * log10(N)) + 1。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int a,b;
while(cin >> a >> b)
cout << int(b*log10(a))+1 << endl;
}