More actions
imported>enochbible No edit summary |
(Repair batch-0002 pages from live compare) |
||
| Line 16: | Line 16: | ||
== Status == | == Status == | ||
{| class="wikitable" | {| class="wikitable" style="width:100%;" | ||
|- | |- | ||
| Run ID | | Run ID | ||
| Line 66: | Line 66: | ||
int n; | int n; | ||
int *nums; | int *nums; | ||
int dmy | int dmy[6]; // dummy variable set | ||
int i, j, k; | int i, j, k; | ||
| Line 73: | Line 73: | ||
for( i = 0; i < n; i++ ) | for( i = 0; i < n; i++ ) | ||
scanf("%d", &nums | scanf("%d", &nums[i]); | ||
for( i = 0; i < 6; i++ ) | for( i = 0; i < 6; i++ ) | ||
dmy | dmy[i] = i; | ||
for( i = 0; i < nc6(n); i++ ) { | for( i = 0; i < nc6(n); i++ ) { | ||
for( j = 0; j < 6; j++ ) { | for( j = 0; j < 6; j++ ) { | ||
printf("%d", nums | printf("%d", nums[dmy[j]]); | ||
if( j != 5 ) printf(" "); | if( j != 5 ) printf(" "); | ||
| Line 86: | Line 86: | ||
} | } | ||
dmy | dmy[5]++; | ||
for( j = 0; j < 5; j++ ) { | for( j = 0; j < 5; j++ ) { | ||
if( dmy | if( dmy[5-j] == n-j ) { | ||
dmy | dmy[5-j-1]++; | ||
for( k = 5-j; k < 6; k++ ) | for( k = 5-j; k < 6; k++ ) | ||
dmy | dmy[k] = dmy[k-1] + 1; | ||
} | } | ||
} | } | ||
| Line 102: | Line 102: | ||
} | } | ||
} | } | ||
Latest revision as of 00:16, 27 March 2026
문제 설명
| 링크 | [1] |
| 개요 | 임의의 수 중에서 당첨번호 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 <stdio.h>
#include <stdlib.h>
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);
}
}