24h購物| | PChome| 登入
2009-01-10 21:19:47| 人氣1,576| 回應1 | 上一篇 | 下一篇

ACM 530 Binomial Showdown

推薦 0 收藏 0 轉貼0 訂閱站台

此題學習重點為,利用FOR同步/* 以防止溢位

/************************************************************/

  1. #include<stdio.h>      
  2. #include<stdlib.h>   
  3. #include<string.h>   
  4. #include<math.h>   
  5. int main()   
  6. {   
  7.     int a,b,n,m;   
  8.     double s;   
  9.     while (1)   
  10.     {   
  11.         scanf("%d %d",&n,&m);   
  12.         if(n==0) break/*n 不可為0*/  
  13.         if(m>n/2) m=n-m;/*N-M<M 這個式子來的 防止出錯*/  
  14.         for(a=1,b=n,s=1;a<=m;a++,b--) /*S=1歸1之用*/  
  15.         {   
  16.          s=s*b;  /*(M*(M+1)*...N計算 b只有跑n-m次*/  
  17.          s=s/a;  /*a從小的開始跑 絕對會可以整除b*/  
  18.         }   
  19.         printf("%.0lf\n",s);   
  20.     }   
  21.     return 0;   
  22. }

台長: 來源不明
人氣(1,576) | 回應(1)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10346 Peter's Smokes
此分類上一篇:ACM 568 Just the Facts

路人
我把你的程式碼傳Q369: Combinations
69 21 就會錯
似乎是浮點數誤差
2009-06-13 22:55:40
版主回應
當然,這兩題不一樣唷
你不會去看我369寫的齁ˋ ˊ
還有大數版本!!
http://mypaper.pchome.com.tw/news/iustlovefish/3/1312061563/20090211211551/
2009-06-14 07:10:23
是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文