zoukankan      html  css  js  c++  java
  • (大数处理)阶乘数位

    计算出第一个正整数n的阶乘位数大于等于 10000的数是多少,
    即求最小的正整数 n满足 n! 的位数大于等于 10000

    知识点:某数  m 的位数可以由  log10(n)+1  取得 

    #include <cstdio>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <math.h>
    using namespace std;
    const int inf=0x7fffffff;
    const long long mod=1e9+7;
    long long n;
    long long ans,mx=-inf;
    
    int main()
    {    
        double x=0;
        for(int i=1;;i++){
            x+=log10(i);          //log10[n*(n-1)*(n-2)*...*2*1]=log10(n)+log10(n-1)+...+log10(2)+log10(1)   
            if(x>=9999){          //这里之所以不是10000,是因为log10(n!)求得的值是n!的位数减 1 ,我们需要的是n!位数>=10000,即 log10(n!)+1>=10000
                cout<<i;
                break;
            }
        }
        return 0;
    }
     
  • 相关阅读:
    python框架之Django(2)-简单的CRUD
    python框架之Django(1)-第一个Django项目
    实习进度13
    实习进度12
    实习进度11
    实习进度10
    学习进度08
    毕设进度07
    毕设进度06
    毕设进度05
  • 原文地址:https://www.cnblogs.com/xusi/p/12410261.html
Copyright © 2011-2022 走看看