# Math# Logarithm# Number Theory

f649 - 暐賢的體重

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算 N^M 的位數。輸入兩個非負整數 NM,輸出 N^M 的位數。由於 N^M 可能非常大,無法直接儲存,因此需要使用數學方法來計算位數。

解題思路

題目要求計算 N^M 的位數,可以利用對數的性質來解決。N^M 的位數等於 floor(log10(N^M)) + 1,根據對數的性質,log10(N^M) = M * log10(N)。因此,位數等於 floor(M * log10(N)) + 1

題目中給定的輸入是 xy,其中 x 對應 Ny 對應 M。如果 x <= 1y <= 0,則 x^y 的值為 1,位數為 1。 否則,使用上述公式計算位數。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
#include <cmath>
using namespace std;
long long x,y;
int main(){
	cout.tie(0);
	cin.tie(0); ios::sync_with_stdio(false);
	while(cin >> x >> y){
		if(x<=1||y<=0)cout << "1\n";
		else cout << floor(log10(log10(x)*y+1)+1) << "\n";
	}
}

Discussion