// hdoj_1060 Leftmost Digit
// 0MS 236K 345 B GCC
#include <stdio.h>
#include <math.h>
int main(void)
{
int n, i, ncase;
long long x;
scanf("%d", &ncase);
for(i = 0; i < ncase; i ++)
{
scanf("%ld", &n);
double m = n * log10((double)n);
double g = m - (long long)m;
g = pow(10.0, g);
printf("%d\n", (int)g);
}
return 0;
}
/*
开始写了一个程序提交了几次Time Limit Exceeded
数太大了,求n^n花费时间太长……
看了别人的代码之后才明白
求log10之后计算会更简单
这个题目有点思想,不算水题,只能说找到方法后就很简单。
log10N^N = N*log10N = M = a.b(a是整数部分,0.b是小数部分)
所以10^M = 10^a.b = N^N(即N^N为a位数)
10^b向下取整即为首位数
举个例子:3^3=27, 3log3 = 1.431364, 10^0.431364 = 2.70000……
此题还是要学会观察,并熟悉对数
*/
[热身题][hdoj_1060]Leftmost Digit
最新推荐文章于 2017-06-05 09:22:05 发布