zoukankan      html  css  js  c++  java
  • 51NOD 1058 N的阶乘的长度

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     收藏
     关注
    输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。
     
    Input
    输入N(1 <= N <= 10^6)
    Output
    输出N的阶乘的长度
    Input示例
    6
    Output示例
    3

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main ()
    {
        int n;
        while (~scanf("%d",&n ) )
        {
            double sum = 1;
            for(int i=1;i <= n;i++)
                sum += log10(i);
            printf("%lld
    ",ll(sum));
        }
        return 0;
    }
    直接暴力

      斯特林公式  这个是近似的  所以直接求 log10 就可以了

    所以 log10( n! )=log10(sqrt( 2*acos(-1.0)*n ) )+ n*log10(n / exp(1.0));

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const double pi = acos(-1.0);
    
    int main ()
    {
        int n;
        while (~scanf("%d",&n ) )
        {
            //double sum = 1;
           // for(int i=1;i <= n;i++)
               // sum += log10(i);
            int sum = 1;
            sum += (int)(log10(sqrt(2.0*pi*n)) + n*log10(n/exp(1.0)));
            printf("%lld
    ",ll(sum));
        }
        return 0;
    }
    strling 公式
  • 相关阅读:
    Spring aop 实现异常拦截
    drf 视图家族
    算法与数据结构
    接口
    Kubernetes
    drf
    drf 序列化
    drf 内部模块
    drf 接口
    vue
  • 原文地址:https://www.cnblogs.com/Draymonder/p/7295155.html
Copyright © 2011-2022 走看看