一个数可以表示为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;
}
posted on 2012-04-30 11:09  pcoda  阅读(113)  评论(0编辑  收藏  举报