zoukankan      html  css  js  c++  java
  • hdu1018——Big number

    题目

    注:这道题可以说不会做,虽然通过百度查找,了解到算位数要用到对数,但是 其知其然,要知其所以然,但是我不知道所以然。

    法一:可以将n!表示成10的次幂,即n!=10^M(10的M次方,10^2是3位M+1就代表位数)则不小于M的最小整数就是
        n!的位数,对该式两边取对数,有M=log10^n!即:
        M = log10^1+log10^2+log10^3...+log10^n
        循环求和,就能算得M值,该M是n!的精确位数。

    主要是使用了下面这个公式:

    log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)

    法二:斯特林[striling]公式,但是我不会


    #include <stdio.h>
    #include <math.h>
    int main()
    {
    int n,i,a;
    double sum;
    while(~scanf("%d",&n))
    {
    
    while(n--)
    { sum=0;
    scanf("%d",&a);
    for(i=1;i<=a;i++)
    {
    sum+=log10(i);
    }
    printf("%d
    ",(int)sum+1);
    }
    }
    return 0;
    }

  • 相关阅读:
    17. 电话号码的字母组合
    12. 整数转罗马数字
    01-正则表达式基础
    前端SEO技巧
    node.js
    Vue.生命周期
    Vue小案例--过滤器的基本操作
    vue简单的计算器
    VSCode 自动刷新
    Vue.js学习
  • 原文地址:https://www.cnblogs.com/qie-wei/p/12094145.html
Copyright © 2011-2022 走看看