f649 - 暐賢的體重
題目描述
題目要求計算 N^M 的位數。輸入兩個非負整數 N 和 M,輸出 N^M 的位數。由於 N^M 可能非常大,無法直接儲存,因此需要使用數學方法來計算位數。
解題思路
題目要求計算 N^M 的位數,可以利用對數的性質來解決。N^M 的位數等於 floor(log10(N^M)) + 1,根據對數的性質,log10(N^M) = M * log10(N)。因此,位數等於 floor(M * log10(N)) + 1。
題目中給定的輸入是 x 和 y,其中 x 對應 N,y 對應 M。如果 x <= 1 或 y <= 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";
}
}