== 문제 설명 == || 링크 ||[http://poj.org/problem?id=2245] || || 개요 ||임의의 수 중에서 당첨번호 6개를 뽑아낸다. || || 입력 ||여러 개의 테스트 케이스, 각 줄의 첫번째 숫자는 6부터 13 사이 임의의 숫자 갯수, 그 뒤에는 첫번째 숫자 갯수 만큼의 정수가 뒤이어 나와야 한다. || || 출력 ||각 테스트 케이스에 대해, 가능한 모든 방법의 수를 오름차순으로 정렬. 각 테스트 케이스는 비어있는 하나의 줄로 분리. || == Status == || Run ID || User || Problem || Result || Memory || Time || Language || Code Length || Submit Time || || 9215091 || enochbible || 2245 || Accepted || 164K || 16MS || C || 1246B || 2011-08-23 09:04:53 || * 확실히 C가 빠르긴 하네요-_-;; == Source Code == {{{ #include #include int nc6( int n ) { // nC6 함수 int res = 1; int i; for( i = 0; i < 6; i++ ) res *= n-i; res /= 720; return res; } int dscanf( int *pnum ) { scanf("%d", pnum); return *pnum; } void main() { int n; int *nums; int dmy[6]; // dummy variable set int i, j, k; while( dscanf(&n) != 0 ) { nums = (int *)malloc(sizeof(int) * n); for( i = 0; i < n; i++ ) scanf("%d", &nums[i]); for( i = 0; i < 6; i++ ) dmy[i] = i; for( i = 0; i < nc6(n); i++ ) { for( j = 0; j < 6; j++ ) { printf("%d", nums[dmy[j]]); if( j != 5 ) printf(" "); else printf("\n"); } dmy[5]++; for( j = 0; j < 5; j++ ) { if( dmy[5-j] == n-j ) { dmy[5-j-1]++; for( k = 5-j; k < 6; k++ ) dmy[k] = dmy[k-1] + 1; } } } printf("\n"); free(nums); } } }}}