ans=n^n
求ans的最左边那位的数值,只能说数学真奇妙呀~呀~~
等式左右同取10为底的对数:
log10(ans)=n*log10(n)
即:ans=10^(n*log10(n))
将指数(n*log10(n))分成两部分:整数部分a,小数部分b
则:ans=10^(a+b)=(10^a)*(10^b)
这样很简单就能看出ans的最高位只和小数部分有关了
#include<stdio.h>
#include<string.h>
#include<math.h>
#define ll long long
int main()
{
double n;
int cas;
scanf("%d",&cas);
while(cas--)
{
scanf("%lf",&n);
double t=n*log10(n);
t=t-(ll)t;
ll ans=pow(10.0,t);
printf("%lld\n",ans);
}
return 0;
}