杭电1060

此题是一道数学题,也是一道技巧题,也是不能直接算的,否则会超时的!!!
此题思路:
设n^n=d.xxxx*10^(k-1),其中k表示n^n的位数;
d.xxxx=10^(log10(n^n)-(k-1));
其中k=(__int64)(log10(n^n)+1;
所以d=(int)(10^(log10(n^n)-(k-1)))=(int)(10^(log10(n^n)-((__int64)(log10(n^n)+1;-1)));
此题思路比较麻烦,但程序还是很简单的哈!
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
 int T,n;
 double x=0.0;
 cin>>T;
   while(T--)
   {
    cin>>n;
  
   printf("%d\n",(int)(pow(10,((n*log10((double)n)-(__int64)(n*log10(n)))))));
   }
   return 0;
}

你可能感兴趣的:(杭电)