Big Number HDU 1018 斯特靈公式

2021-09-03 01:23:12 字數 793 閱讀 8434

給你乙個整數n,求n的階乘是多少位數字。1 ≤ n ≤ 10^7

先輸入乙個整數t ,有t組資料,每組資料輸入乙個整數n,輸出乙個整數答案。

輸入輸出

n非常大,整數型別無法儲存。用到了乙個公式 :斯特靈公式

附上大佬的部落格,講的很好:

n! = ((2*pi*n)^(1/2))*((n/e)^n); 

可以推出lg(n!)=(lg(2*pi)+lg(n))/2 + n*(lg(n)-lg(e));

#include#include#includeusing namespace std;

const long double c1=0.798179868358; //lg(2*pi)

const long double c2=0.434294481903; //lg(e)

int main()else

printf("%d\n",ans);

} return 0;

}

不用斯特靈公式也可以做,乙個整數x的位數等於log10(x)+1.

n的階乘的位數就等於 1+log10(n!)=1+log10(1)+log10(2)+log10(3)+log10(4)+...log10(n).

#includeusing namespace std;

typedef long long ll;

int main()

printf("%d\n",int(ans));

}return 0;

}

10 1趣味陣列

1 狼追兔子 問題描述 乙隻兔子躲進了10個環型分布的洞中的乙個.這只純狼在第乙個洞中沒有找到兔子,就隔了乙個洞,到第三個洞去找 也沒有找到,就隔兩個洞,到第六個洞找,以後沒多乙個洞去找兔子.這樣下去,一直找不到兔子,請問兔子可能在那些洞中?狼追兔子的問題 演算法 有限的窮舉搜尋 if 0 int ...

10 1國慶快樂

國慶 hh的項鍊 首先預處理出乙個陣列a,a i 表示第i個數右邊第乙個和這個數相同的數的位置,如果右邊沒有相同的數那麼a i 就等於n 1。這樣,對於詢問 l,r l,r 中滿足a i r的數的個數就是答案。因為這樣可以保證對於多個相同的數,只有最靠右的乙個對答案有貢獻。所以問題就變成了求區間中權...

Shell程式設計 101

shell程式設計是從事linux運維同學的必備技能,靈活運用shell 指令碼可以大大減少日常重複性的維護工作,也是自動化運維的早期體現形式。在日常工作中,經常有運維同學反映shell難學,語法難記憶。其實在我看來,學習任何技術都是要結合場景進行實踐練習的。前期可以通過快速入門基礎語法知識,結合一...