对于数论的题常年感冒,这题看了网上一篇非常巧妙的解法才AC的,大致叙说一下,N^N=10^(N*log10(N)),高潮来了,N^log10(N)=整数部分+小数部分,那么原式转化为:10^整数部分*10^小数部分,10^整数部分是一大串0不用管,那么我们只需要求出10^小数部分的整数位就是答案了,实在是服了,然后就是还学了一个math.h中的函数,小数部分=modf(待分解数字,&整数部分),代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
double zheng,xiao,n;
scanf("%lf",&n);
xiao=modf(n*log10(n),&zheng);
modf(pow(10.0,xiao),&zheng);
printf("%.0lf\n",zheng);
}
return 0;
}