여기서 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 개의 댓글:
댓글 쓰기