zoukankan      html  css  js  c++  java
  • HDOJ 1018(阶乘位数)

    1.log10(num)+1

    2.较小数情况下,sprintf(str,"%d",num);输出strlen(str),所以不能初始化为0

    自然对数:log()  ,以二为底log2(num)=log(num)/log2,因为那个自然对数的底是无理数,不好表示,只要有了自然对数的表示,其他用换底公式就OK啦

    我一直想的是求出阶乘后,再strlen(str),其实求阶乘位数有一个公式

    //lnN!=NlogN-N+0.5*log(2*PI*N)

    #include<stdio.h>

    #include<math.h>

    #define PI 3.14159265

    int num,ans;

    void count_factorial()

    {

        double t;

        t = (num*log(num) - num + 0.5*log(2*num*PI))/log(10);

        ans= (int)t+1;

        printf("%d\n",ans);

    }

    int main()

    {

        int i,n;

        scanf("%d",&n);

        for( i=1 ; i<=n ; i++ )  

        {

    scanf("%d",&num);

    count_factorial();

    }

    return 0;

    }

    3.

  • 相关阅读:
    awk
    Python自动化开发之python的常用模块
    sed
    python自动化开发-8
    正则表达式-2-正则表达式实战1
    linux之sort和uniq
    SSH免密登录
    Docker下安装Mongodb
    Docker下安装Elasticsearch
    Docker下安装RabbitMQ
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2461493.html
Copyright © 2011-2022 走看看