
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1061
思路:结论:a=10^(N*lg(N) - [lg(N^N)]);
证明:如果一直a是结果,则a*10^x=n^n;
对等式两端去对数 lg(a*10^x)=lg(n^n);
x+lga = n*lgn;
所以:a=10^(n*lgn-x);
只要再求出x就可以了,x是n^n的位数,因此,x=[lg(n^n)],[ ]表示向下取整。
所以 a=10^(N*lg(N) - [lg(N^N)]);
参考文章:https://blog.csdn.net/zy691357966/article/details/39718037
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long LL;
int main(void)
{
int t;
LL n;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n);
double tp=1.0*n*log10(1.0*n);
tp=tp-(LL)tp;
int ans=(int)(pow(,tp));
printf("%d\n",ans);
}
return ;
}