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