利用log
m = n^n
则 log(m) = n*log(n)
m = 10 ^( n*log(n) )
因为10的整数次方的最高位是1,所以只有n*log(n)的小数部分对最高位有影响,而此时已经有log降次,可以直接求。
AC代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int T, n;
double a, b;
cin >> T;
while( T-- ){
cin >> n;
a = n * log10( n * 1.0 ) - (__int64)( n * log10( n * 1.0 ) );
b = pow( 10.0, a );
cout << (int)b << endl;
}
return 0;
}