对数的应用 2015-02-08 17:30 18人阅读 评论(0) 收藏

对一个数num可写为 num=10n * a,即科学计数法,使a的整数部分即为num的最高位数字,numnum=10n * a这里的n与上面的n不等

两边取对数: num*lg(num) = n + lg(a);

a<10

0<lg(a)<1

x=n+lg(a) nx的整数部分,lg(a)x的小数部分

x=num*lg(num);

a=10(x-n)=10(x-int(x)))

再取a的整数部分即得num的最高位

 

代码:

#include<cstdio>
#include<cmath>
int main()
{
 int t;
 double x;
 __int64 n;
 scanf("%d",&t);
 while(t--){
  scanf("%I64d",&n);
  x=n*log10((double)n);
  x-=(__int64)x;
  x=pow(10.0,x);
  printf("%d\n",(int)x);
 }
 return 0;
}

posted @ 2015-02-08 17:30  JoneZP  阅读(116)  评论(0编辑  收藏  举报