日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hdu1018--Big Number

發布時間:2023/12/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu1018--Big Number 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主要是使用了下面這個公式:

log10(n!)=log10(1*2*3…*n)=log10(1)+log10(2)+…+log10(n)

注意:

這邊的result要用double值,精度比較高,我wrong了一次就因為把它設成float值了

代碼如下:

?

#include<stdio.h>
#include<math.h>
int main()
{
?int n,t;
?double result;

?scanf("%d",&t);
?while(t--)
?{
??scanf("%d",&n);
??result=log10((float)n);
??while(n!=1)
??{
???n--;
???result+=log10((float)n);
??}
??printf("%d\n",(int)result+1);
?}
?return 0;
}

這個程序效率不高,提交以后看了一下,好像有2000多個ms

?

在網上還查到一個資料:

《計算機程序設計藝術》中給出了另一個公式
n! = sqrt(2*π*n) * ((n/e)^n) * (1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3))
π = acos(-1)
e = exp(1)
兩邊對10取對數
忽略log10(1 + 1/(12*n) + 1/(288*n*n) + O(1/n^3)) ≈ log10(1) = 0
得到公式
log10(n!) = log10(sqrt(2 * pi * n)) + n * log10(n / e)

有興趣的朋友可以用這個公式做做

轉載于:https://www.cnblogs.com/pandy/archive/2008/10/24/1318347.html

總結

以上是生活随笔為你收集整理的hdu1018--Big Number的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。