*
可設想n!的結果是不大於10的m次冪的數,即n!<=10^m(10的m次方),則不小於m的最小整數就是 n!的位數
,對 該式兩邊取對數,有 m =log10^n! 即:m = log10^1+log10^2+log10^3...+log10^n 迴圈求和,就能算得m值,該m是n!的精確位數。當n比較大的時候,這種方法方法需要花費很多的時間。
例如:1234一定是大於1000小於10000(3---4),36542一定是大於10000小於100000(4----5次方)。
n!<=10^m(10的m次方),則不小於m的最小整數就是 n!的位數,
有 m >=log10(n!) 即:m >= log101+log102+log103...+log10n。(演算法)
得到的m值不是整數則轉化成整數再加一。
#include
#include //對數函式包含於math.h標頭檔案中
求N 有多少位
description n n的階乘 是非常大的數,計算公式為 n n n 1 n 2 2 1 現在需要知道n 有多少 十進位制 位。input 每行輸入1個正整數n。0 n 1000000 output 對於每個n,輸出n 的 十進位制 位數。sample input13 32000 100000...
大數運算 7 大數階乘 求階乘
對於大數來說,乙個數的階乘是非常大的,同樣,乙個int型別的整數,他的階乘就有可能會很大。就拿50來說,他的階乘位數是65位,就已經遠遠超過了long long int型別的最大值。這時候,我們要通過字串的方法,來進行階乘的運算。當然,需要注意的是 我們所求乙個數的階乘,這個數是在int範圍內的,5...
c語言求大數階乘,10000的階乘
10000以內階乘,在c語言中沒有型別可以以儲存這麼大的數,所以我們可以用陣列來存它,int a 10005 這裡10005只是習慣,當然,也可以用斯特靈公式來算a陣列的大小 下面附上 題解請看 注釋,include int a 100000 int main 這層迴圈使得a陣列每個數都是個一位數 ...