HDOJ1060-数学公式

/*
  求num的最左位上的数:
  设num=a.~*10^n; a即为所求
  lg(num)=n+lg(a.~);
  ->:lg(a.~)=lg(num)-n;
  又n为num的总位数减1,n=(int)lg(num);
  ->:a.~=pow(10,1g(num)-(int)(lg(num)));
*/
#include <cstdio>
#include <cmath>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int cas;
    scanf("%d",&cas);
    while (cas--)
    {
        double num;
        scanf("%lf",&num);
        double x=num*log10(num);
        x-=(__int64)x;
        int ans=pow(10.0,x);
        printf("%d\n",ans);
    }
    return 0;
}

你可能感兴趣的:(HDOJ1060-数学公式)