# Math# Logarithm# Number Theory

d171 - 飛蛾撲火(二)

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算給定整數 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;
}

Discussion