zoukankan      html  css  js  c++  java
  • 【HDU】 1018 Big Number

    大意就是求 :

    log10(n!) = log10(1 * 2 *  3 * .......*n) = log10(1) + log10(2) + ........+log10(n);

    打表的话会MLE,直接递推即可了。后台数据不会非常刁钻。

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    const int maxn = 10000000;
    //double dp[maxn + 1];
    //void List(){
    //    dp[1] = log10(1.0);
    //    for(int i = 2; i < maxn; i++)
    //        dp[i] = dp[i - 1] + log10(1.0 * i);
    //    return;
    //}
    int main(){
        int T;
        //List();
        scanf("%d",&T);
        while(T--){
            int n;
            scanf("%d",&n);
            double ret = 0;
            for(int i = 1; i <= n; i++)
                ret += log10(1.0 * i);
            printf("%.f
    ",ceil(ret));
        }
        return 0;
    }
    

    另一种方法,就是斯特林公式



    也就是log10(n!) = log(n!) / log(10) = ( n*log(n) - n + 0.5*log(2*π*n))/log(n);

    直接公式就出来了,更快捷。

    这里就不多说了。

  • 相关阅读:
    python注释中文
    python学习好文
    浅析python 的import 模块(转)
    Python解释器镜像源修改
    Python解释器安装
    Python和Python解释器
    计算机基础小结
    网络瓶颈效应
    编程语言分类
    子查询|视图事务
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5178229.html
Copyright © 2011-2022 走看看