数学_同取对数(HDU_1060)

m = n^n  ==>  lg(m) = lg(n^n)  ==>  lg(m) = n*lg(n)  ==>  m = 10^(n*lg(n))

对于 10^N = 10^123.456 = 10^(123+0.456) = 10^123 * 10^0.0.456

10^123 的最高位为 '1',即 10^N 的最高位取决于 n*lg(n) 的小数部位

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


int main(int argc, char* argv[])
{
    #ifdef __MYLOCAL
    freopen("in.txt","r",stdin);
    #endif

    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n;
        scanf("%d",&n);
        int a = (int)pow(10.0,n*log10(n*1.0) - (__int64)(n*log10(n*1.0)));
        printf("%d
",a);
    }

    return 0;
}
原文地址:https://www.cnblogs.com/lk1993/p/3244482.html