题目大意:
给定一个正整数N,请输出N的N次方最左边的数。(N>=1&&n<=1000000000)
解题思路:
N较大,可以令:N的N次方=d.xxx * 10的(k-1)次方,其中k表示N的N次方的位数。
而位数k=lgX(取整)+1,因此d=10的(lg(N的N次方)-lg(N的N次方)(取整))次方(取整)。
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
long long n,a;
double b;
int t;
scanf("%d",&t);
while(t--)
{
scanf("%I64d",&n);
b=(n*1.)*log10((n*1.));
long long bb=(long long)b;
double k=b-bb;
long long ans=(long long)pow(10.,k);
printf("%I64d\n",ans);
}
return 0;
}