hdu 1060(Leftmost Digit)

hdu 1060(Leftmost Digit)
 1  /*
 2  Author:    Leo.W
 3  Descriptipn:    计算N^N结果的最左边的数            
 4  How to Do:    数学题 由sum=N^N,两边对10取对数,log10(sum)=Nlog10(N),有sum=10^(Nlog10(N));
 5              由于10的整数次幂首位均为1,则仅需考虑Nlog10(N)的结果的小数部分即可
 6     */
 7 #include <stdio.h>
 8 #include <math.h>
 9  int main(){
10      // freopen("in.txt","r",stdin);
11       int t;
12     __int64 num,sum2;
13     scanf("%d",&t);
14      while(t--){
15         scanf("%I64d",&num);
16          double sum1=num*log10( double(num));
17         sum2=(__int64)sum1;
18         sum1-=sum2;
19         num=(__int64)pow(10.0,sum1);
20         printf("%I64d\n",num);
21     }
22      return 0; 
23 } 

你可能感兴趣的:(hdu 1060(Leftmost Digit))