andy6804tw
8/14/2016 - 8:03 AM

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=471 r取k有公式=>r ! / ( r - k ) ! * k ! ,也就是斯巴卡

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=471

r取k有公式=>r ! / ( r - k ) ! * k ! ,也就是斯巴卡三角形注意溢位的問題 另外要考慮到 C10取1 跟C10 取9 是一樣的,做一下轉換就能避免超時的問題

import java.util.*;  
  
public class Main {  
  
    public static void main(String[] args) {  
        Scanner scn = new Scanner(System.in);  
        while(scn.hasNext()){
        	int r=scn.nextInt(),k=scn.nextInt();
        	if(r==0&&k==0)
        		break;
        	System.out.println(combi(r,k));
        }
    }
    public static long combi(int r,int k){
    	long p=1;
    	if(r/2<k)
            k = r-k;
    	for(int i=1;i<=k;i++){
    		p=p*(r-i+1)/i;
    	}
    	return p;
    }
    /* 
    題目:Q530: Binomial Showdown
    作者:1010
    時間:西元 2016 年 8 月 */
}