程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1018——Big Number

HDU 1018——Big Number

編輯:C++入門知識

求某數階乘的位數。網上比較流行的方法是取對數後硬算,卡時而過,還是有些取巧成分的。 正解可能是數論中的斯特林估算階乘法(來源為WIKI):   對這個公式取對數,可以快速得到位數,另外在比賽中進行快速估算也是比較方便的。 [cpp  #include <iostream>   #include <cmath>   #include <iomanip>   using namespace std;      const double PI=acos(-1);   const double e=exp(1);      int main()   {       int testcase;       cin>>testcase;       while(testcase--)       {           int n;           cin>>n;           double res;           if(n==1 || n==0)           {               cout<<"1"<<endl;           }           else           {               res=log10(sqrt(2*PI*n))+n*log10(n/e);//斯特靈公式                cout<<setiosflags(ios::fixed)<<setprecision(0)<<ceil(res)<<endl;           }       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved