hdu_1060_Leftmost Digit

一个数可以表示为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;

}

你可能感兴趣的:(left)