Big number

Posted 扶芥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Big number相关的知识,希望对你有一定的参考价值。

求大整数阶乘的位数:

根据:一个数n的位数等于(int)log10(n)+1;

证明:设 10m-1<=n<10m,那么显然n的位数为m

       log10(10m-1)<=log(n)<log10(10m)

      m-1<=log(n)<m,

      log10(n)<m<log10(n)+1

     那么,m=(int)log10(n)+1

所以,n!的位数:(int) [log10(n*(n-1)*(n-2)*....*1)]+1=int(log10n+log10n-1+....+log101)+1

代码如下:

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
   int t,n;
   cin>>t;
   for(int i=0;i<t;i++){
    cin>>n;
    double result=0.0;
    for(int j=1;j<=n;j++){
        result+=log10(j);
    }
    int r=(int)result+1;
    cout<<r<<endl;
   }
    return 0;
}

 

以上是关于Big number的主要内容,如果未能解决你的问题,请参考以下文章

Big Number

HDU 1018 Big Number

HDU 1018 Big Number 数学题

Big Number

HDU 1212: Big Number

Big Number