求n^n的最高位数字,其中n<=10^9,在这里需要用到求数位公式,科学计数法,pow函数,两边同时取对数
eg:n^n=a*10^m,n*log10(n)=log10(a)+m,a=10^(n*log10(n)-m).考虑到double精度问题,最好把n弄成double类型……
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
double n;
scanf("%d",&t);
while(t--)
{
scanf("%lf",&n);
double ans=n*log10(n);
int k=(int)(pow(10.0,ans-(long long)ans));
printf("%d\n",k);
}
return 0;
}