1 k
2 2K-k+1
3 2K+k
4 4K-k+1
5 4k+k
.
.
.
문제에서 등수는 이런 식으로 증가한다
(N개의 행과 K개의 열을 가지고 있고 n은 행 번호, k는 열 번호라고 가정할 때)
잘 살펴보면 1행과 2행을 더하면 2k+1, 3행과 4행을 더하면 6k+1과 같이 규칙을 띈다.
이를 고등학생 때 배운 수열에 대입하면 an = (4n-2)K+1이 나온다
수열의 합을 구하면 Sn = (2Kn+1)n 이 나온다.
하지만 언제나 짝수 개의 행이 나오지는 않으므로 N이 홀수이면 Sn = (2Kn+1)n - ((N+1)K-k+1)이 된다.
이를 코드로 다음과 같이 나타낼 수 있다
#include <stdio.h>
int main(void)
{
int test_case;
int T;
setbuf(stdout, NULL);
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
int N, K, n, s, a;
printf("#%d", test_case);
scanf("%d %d", &N, & K);
n=(N/2)+(N%2); // 1행이 끝일 때, 2행이 끝일 때는 n=1 / 3행이 끝일 때, 4행이 끝일 때는 n=2 ...
s = (2*K*n+1)*n; // 수열의 합
for (int k=1;k<=K;k++) {
if (N%2==0) printf(" %d", s);
else printf(" %d", s-((N+1)*K-k+1)); // 행이 홀수 개일 때
if (k==K) printf("\n");
}
}
return 0; //정상종료시 반드시 0을 리턴해야 합니다.
}
'문제풀이 > C 문제풀이' 카테고리의 다른 글
[SWEA]8500 극장 좌석 (0) | 2019.09.18 |
---|---|
[SWEA]7732 시간 개념 (0) | 2019.09.17 |
[SWEA]8457 알 덴테 스파게티 (0) | 2019.09.16 |
[SWEA]8338 계산기 (0) | 2019.09.10 |
[SWEA]5431 민석이의 과제 체크하기 (0) | 2019.09.10 |