码迷,mamicode.com
首页 > 其他好文 > 详细

hdoj 1060

时间:2014-07-29 12:34:57      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:数据   io   代码   amp   log   技术   return   print   

代码:

#include <stdio.h>
#include <math.h>

int main()
{
    int t;
    while(scanf("%d",&t)!=EOF)
    {
        while(t--)
        {
            __int64 n;
            scanf("%I64d",&n);
            double x=n*log10(n*1.0);
            x-=(__int64)x;
            __int64 a=pow(10.0, x);
            printf("%I64d\n",a);
        }
    }
    return 0;
}

要点:这道题的输入数据最大为1000000000,而且是求n^n,所以任何数据都不能用来存放n^n的结果,

考虑到用科学技术法表示一个数,可有以下推导:

x=n^n=a*10^m;// 要求x的最大位数,即求a的第一位数字;

lg(x)=n*lg(n)=m+lg(a);// 取对数,0<a<10,0<lg(a)<1,对n*lg(n)取整可得到m;

lg(a)=lg(x)-m;

a=pow(10,n*1g(n)-m);

最后取a整数部分即可。

hdoj 1060,布布扣,bubuko.com

hdoj 1060

标签:数据   io   代码   amp   log   技术   return   print   

原文地址:http://www.cnblogs.com/weiyikang/p/3874740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!