当前位置: 代码迷 >> 综合 >> HDU:1060nbsp;nbsp;Leftmostnbsp;Digit
  详细解决方案

HDU:1060nbsp;nbsp;Leftmostnbsp;Digit

热度:99   发布时间:2024-01-04 11:12:40.0

m=n^n;两边同取对数,得到,log10(m)=n*log10(n);再得到,m=10^(n*log10(n));
然后,对于10的整数次幂,第一位是1,所以,第一位数取决于n*log10(n)的小数部分

#include<stdio.h>
#include<math.h>
int main()
{
    __int64 cas,b,i,d;
    double a,n,c;
    scanf("%I64d",&cas);
    for(i=1;i<=cas;i++)
    {
        scanf("%lf",&n);
        a=n*log10(n);
        b=(__int64)(a);
        c=a-b;
        d=(__int64)(pow(10,c));
        printf("%I64d\n",d);
    }
    return 0;
}

  相关解决方案