您的位置:首页 > 其它

hdu 1060(思维)

2017-12-08 16:59 148 查看
题意:求n^n最高位的值

思路: lg(n^n)=n+lg(n)  ,  n^n=a * 10^m (0<a<10)   

所以   n+lg(n) =  lg(a*10^m ) = m+lg(a)     其中n,a,m均为整数,且  0<lg(a)<1

则 lg(a)为n+lg(n)的整数部分,然后就得到答案了

果然遇到n次方级别的数要先想到取对数啊。。

#include <iostream>
using namespace std;
#include <math.h>
#include <algorithm>
#define ll long long

int main()
{
int t;
ll n;
cin>>t;
while(t--)
{
cin>>n;
ll a=n* (double)( log(n)/log(10) );
double b= (double)n*(double)(log(n)/log(10))-a;
// cout<<a<<' '<<b<<endl;
b=pow(10,b);
cout<<(ll)b<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hdu