C程式計算4020 20 ,C C 程式計算40

2022-05-06 20:59:24 字數 1219 閱讀 9877

1樓:

// 原式= (21*22*23*...*40)/(1*2*3*...*20)// 演算法簡述:

拿分母中的20個數來迴圈,拆開成質數相乘,//並拿此質數和分子中的數約分, 直至分母中的20個數全是1為止

#include

int isprime(int n) } return flag;}

int getleastprimefactor(int n) } } return n;}

int main() for (i = 0; i < 20; i++) } } } long long ans = 1; for (i = 0; i < 20; i++) printf("%lld\n", ans); return 0;}

2樓:匿名使用者

寫一個求階層的函式。

int jieceng(int n)

然後在main()函式中求你的算式:

int m = jiecheng(40) / (jiecheng(20) * jiecheng(20));

3樓:匿名使用者

40!是47位,用子函式計算階乘不好,long long型應該可以裝下,但是資料太大,容易溢位

那麼就用一個別的方式,在for中除法減低大資料int n=1,m=1,i,s=1;

for(i=21;i<=20;i++)

4樓:匿名使用者

如果允許使用longlong(vc中用__int64)就很簡單了

(1)先對消掉一個20!,這樣式子就成了21*22*...*40/(1*2*...*20)

(2)然後把這個式子變成21/1 * 22/2 * 23/3 * 24/4 * ... * 38/18 * 39/19 * 40/20,這樣不會發生溢位,可以正常計算出來

如果不允許使用longlong,那就使用兩個long,一個long儲存8位十進位制整數。

(1)先對消掉一個20!,這樣式子就成了21*22*...*40/(1*2*...*20)

(2)然後把這個式子變成21/1 * 22/2 * 23/3 * 24/4 * ... * 38/18 * 39/19 * 40/20,在乘的過程中,判斷結果是否大於等於10^8,滿足則到另一個8位整數,以後乘的時候,也得同時乘以該數。

如果擴充套件一下,乾脆寫個大整數運算程式,這樣即使計算40000!/(20000!*20000!)都是小菜,呵呵。

求程式完成 改錯(C,C 程式改錯題

抱歉,我這2天也在學這一塊。include using namespace std define max a,b a b a b int num template struct binode 二叉樹的結點結構 template class bitree bitree binode proot 帶參建...

C程式設計師轉C,C 和C 哪個強大 為什麼

這東西好像是一派相乘的,c c c 越往後封裝性越高,月容易開發,返回去,你的好好理解演算法,c 中包含部分控制元件和很多演算法,c就是純演算法了,關鍵是你的 想 清楚指標,庫沒有c 多,很多東西要自己動手開發個原裝貨 c primer plus 重點學一下指標,有關類的知識學了c 應該都知道吧 有...

c語言程式編寫換硬幣程式,C語言程式題,,,,,硬幣兌換 給定某一金額,輸出其兌換成硬幣的方案有幾種 分別如何兌換?金額範圍

以下是源 include int arrange int n 返回兌換方案return count void main c語言程式題,硬幣兌換 給定某一金額,輸出其兌換成硬幣的方案有幾種 分別如何兌換?金額範圍 include stdio.h include stdlib.h void main p...