题意:给你一个n,求n的n次方的最左边的数。

这里使用对数来求解

比如:

3^3 = 27

27 = 2.7 * 10^1

n^n =x * 10^y

x的整数部分就是我们要求的数,即为(int)x。

两边取对数:

lg(n^n) = lg(x * 10^y)

化简求得:

x = 10^(n*lgn - y);

而y = lgn^n向下取整数。

所以x就可以得出了。


代码:

Memory: 1820 KB
Time: 0 MS
Language: C++
Result: Accepted


#include<iostream>
#include<cmath>
using namespace std;
int main(){
int ans, n, i;
double y, x;
cin>>i;
while(i--){
cin>>n;
x=floor(n*log10(n));
y=n*log10(n)-x;
ans=pow(10.0, y);
cout<<ans<<endl;
}
}