1060是求N的N次方的最左边的数,N的范围最大可以到10亿,链接为:
从题目要求来看,用普通方法算出N^N明显是要越界的,这里的方法是求对数,两边取log,经分析,首位取决于小数,代码如下:
#include
#include
int main(int argc,char *argv[])
{
double m,a;
int t,i,n,k;
long long b;
scanf("%d",&t);
for(i = 0;i < t;i++)
{
scanf("%d",&n);
m = n * log10(n);
b = (long long)m;
a = m - b;
k = (int)pow(10.0,a);
printf("%d\n",k);
}
return 0;
}
阅读(321) | 评论(0) | 转发(0) |