题意:求n^n最高位的值
思路: lg(n^n)=n+lg(n) , n^n=a * 10^m (0<a<10)
所以 n+lg(n) = lg(a*10^m ) = m+lg(a) 其中n,a,m均为整数,且 0<lg(a)<1
则 lg(a)为n+lg(n)的整数部分,然后就得到答案了
果然遇到n次方级别的数要先想到取对数啊。。
#include <iostream>
using namespace std;
#include <math.h>
#include <algorithm>
#define ll long long
int main()
{
int t;
ll n;
cin>>t;
while(t--)
{
cin>>n;
ll a=n* (double)( log(n)/log(10) );
double b= (double)n*(double)(log(n)/log(10))-a;
// cout<<a<<' '<<b<<endl;
b=pow(10,b);
cout<<(ll)b<<endl;
}
return 0;
}