2016년 3월 4일 금요일

1010번: 다리놓기

본문제는 단순 확률 조합문제로 조합을 구현 할수 있는가를 판단하는 문제

여기서 nCk 에서 k가 n/2 보다 클경우 반복횟수가 많아질 수 있으니 , if 문을 통해 검사를 해준뒤 k에들어갈 수를 더 작은수로 바꿔주면 시간을 단축시킬수 있음.


#include<stdio.h>
int main(){
    int T;
    int i, j,k;
    int a, b;
    double ans;
    int n;
    scanf("%d", &T);
    for (i = 0; i < T; i++){
        scanf("%d  %d", &a, &b);
        k = a;
        if (a >(b / 2)){
            k = b-a;
        }
        n = b;
        ans = 1;
        for (j = 1; j <= k; j++){
            ans = ans*(n - j + 1) / j;
        }
        printf("%d\n", (int)ans);
    }
 
    return 0;
}

0 개의 댓글:

댓글 쓰기