一个数可以表示为num=a*10^n,即科学表示法
那么num^num=10^n*a(1<a<10),两边取对数
num*log10(num)=n+log10(a);
令x=num*log10(num)
则log10(a)=x-n=x-(int)x
a=10^(x-(int)x)
实际上令m=n^n,则log10(m)=n*log10(n)
所以m=10(n*log10(n))因为10的任何整数次幂首位一定是1,所以m的首位只与n*log10(n)的首位有关
View Code
#include<iostream> #include<cmath> using namespace std; int main() { long long T,n; double ans; cin>>T; while(T--) { cin>>n; ans=n*log10(n); ans-=(long long)ans; cout<<(long long)pow(10,ans)<<endl; } return 0; }