Stirling 公式
也就是说:
Stirling公式的意思是,当n足够大时,n! 计算非常困难。 关于n有很多! 的等式,但无法很好地估计阶乘结果。 特别是n大的话,误差会变得非常大。 然而,可以利用Stirling公式将阶乘转化为幂函数,从而更好地估计阶乘的结果。 而且n越大,估计越准确。
PKU 1423 Big Number
big number http://www.Sina.com/1000 ms
http://www.Sina.com/65536 k 3358 www.Sina.com/26811
Time Limit:8557
描述
inmanyapplicationsverylargeintegersnumbersarerequired.someoftheseapplicationsareusingkeysforsecuretransmionofdata, encryytionsforsecuretransmisionofdata etc.inthisproblemyouaregivenanumber,youhavetodeterminethenumberofdigitsinthefactorinthefactoriorianttttorionttorion
inputconsistsofseverallinesofintegernumbers.thefirstlinecontainsanintegern,whichisthenumberofcasestobested,Followedbyn
theoutputcontainsthenumberofdigitsinthefactorialoftheintegersappearingintheinput.sample input
21020样本输出
719源
Dhaka 2002
Memory Limit:
用Stirling公式求解n! 的位数:容易知道的整数n的位数为[lgn] 1。 使用Stirling公式计算n! 的位数时,可以两边取对数,为:
所以n! 的位数如下。
span style='font-size:18px;' # include iostream # includecmathusingnamespacestd; const double e=2.7182818284590452354; constdoublepi=3.141592653589793239; doublelogstirling(intn ) return0.5*log10 )2*pi*n ) n*log10 ) n/e ); }intmain(intargc,char *argv[] ) {int t,m; cin t; wile(t----) {cin m; cout(int ) logStirling(m ) m )1 endl; }return 0; (}/span