• HDU1060 Leftmost Digit


    题目描述:

    Given a positive integer N, you should output the leftmost digit of N^N.
     
    题目分析:
                 由于N给的数据是10^9,很显然将N一个个乘起来那就是你不想活了啊。一般对于a^b我们是进行取对数,这道题也不例外。
     
    题目转化:
               设 M = N^N , 等式两边去对数 log10 

         log10 ( M ) = log10 ( N^N ) = N * log10 ( N ) 

         再化简过去 可得:  M = 10 ^(  N*log10(N) ) 

         我们假设 N * log10( N )  = A + B     (其中A为整数部分,B为小数部分)

         则有 M = 10^A + 10^B ,  对于整数A, 则10^A必定为 100...0的形式, 而对于10^B ,因为B = [0,1) 所以10^B 属于 [ 1,10 )区间 

         可以得出,对与M的最左边有影响的只有 10^B ,所以结果为   pow( 10 ,  N*log10(N) - floor( N*log10(N) ) ) 

    代码:

    View Code
     1 #include"stdio.h"
     2 #include"math.h"
     3 int main()
     4 {
     5    int t,n;
     6    scanf("%d",&t);
     7    while(t--)
     8    {
     9          double a;
    10          int b;
    11          scanf("%d",&n);
    12          a=n*1.0*log10(n)-floor(n*1.0*log10(n));
    13          b=floor(pow(10,a));
    14          printf("%d\n",b);
    15    }
    16 return 0;
    17 }
  • 相关阅读:
    SQL INJECTION的SQL Server安全设置
    跨数据库查询
    IIS to secure
    win2003 服务器设置 完全版
    Taskkill命令详解
    PsExec
    Sql Server自增列处理
    Index Data
    Sql Server常用查询汇总
    Symbian S60 SDK模拟器自动退出的解决
  • 原文地址:https://www.cnblogs.com/YQH760/p/2853648.html
Copyright © 2020-2023  润新知