您的位置:首页 > 其它

hdu_1060_Leftmost Digit

2012-04-30 11:09 381 查看
一个数可以表示为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: