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;
}