HDU 1060 Leftmost Digit

看了这个题好久还是不知道怎么做,后来经过lvsi的指导,才把它给A了。

m=n^n;两边同取对数,得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));

然后,对于10的整数次幂,第一位是1,所以,第一位数取决于n*log10(n)的小数部分;

我们知道一个数x可以用10^(n +m)( n可以是小数,m是整数 )表示,那么10^n就是表示x/10^m之后的数及前面的数值。

#include<stdio.h>
#include
<stdlib.h>
#include
<math.h>
int main()
{
int T;
double N;
scanf(
"%d\n",&T );
while( T-- )
{
scanf(
"%lf",&N );
double x=N*log10( N );
long long t=( long long )x;
x
=x-t;
t
=( long long )pow( 10,x );
printf(
"%I64d\n",t );
}
return 0;
}

  


转载于:https://www.cnblogs.com/bo-tao/archive/2011/08/19/2146066.html

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