2014년 4월 12일 토요일

효주가 만든 시험

공지사항

  1. 시험 시간에 착오가 있어 종료 시각을 연장합니다.
    출제자 분께서 정확한 시각은 말씀해 주지 않으셨고,
    22시보다 늦게 보내도 어느 정도까진 답안을 받습니다.
  2. 본 문제는 놀먹의 허효주님께서 이공계의 넘침을 막기 위해 출제하셨으며,
    이 블로그 특성에 맞게 편집되었습니다.
    편집 전의 문항을 보려면 여기로 가시면 됩니다.

안녕하세요 출제자 허효주입니다 ㅋㅋㅋㅋ         
본 시험은 문학 시험과 비문학 시험으로 나뉩니다.
문학 시험은 여러분의 사고의 확장과 깊이, 그리고 인생관을 보려는 목적이고
비문학 시험은 논리력을 중점적으로 보려는 목적입니다.
다시 말해서 문학에는 정답이 없어요
외형률이 어떻고 그딴 거 상관 없고, 일부러 길게 쓰려 하지 않아도 됩니다.
놀먹에서는 긍정적인 사람과 부정적인 사람 모두를 환영하니,
느낀 그대로 써 주시면 되고,
비문학에는 창의적 사고력이 그다지 필요하지 않으니까, 이 점 잘 알아두시고
시험시간 배분하는 데 착오 없으시길 바랍니다 ㅎㅎ

질문사항 : 까똑 hyojuheo
답안제출 : hyojuheo@gmail.com (22시까지)
(이메일 제목은 응시자의 닉네임이나 실명으로 해주세요^-^)

문학

다음 시의 해석을 서술하세요 (작자 생략)
<>
달토끼가 방아만 찧는다면
그저 팔이 아프고 숨이 차겠죠
달토끼가 지상으로 내려오면
그땐 그저 낯설고 설레겠죠
달토끼가 혼자 제 살 집을 지으면
산토끼는 어슬렁거리다 그냥 가겠죠
달토끼가 집을 다 지을 무렵
그때서야 조용히 달을 바라보겠죠
달토끼가 새로운 친구를 찾으려 하면
달토끼는 비로소 해를 만나겠죠
달토끼가 해를 만났을때
해는 그저 세상을 밝히다 사라지겠죠

그리고 다시 밤이 되었을때

달토끼는
영롱하게 빛나는 달 대신
달에 남아있는 자신의 그림자를 보며
천천히 고개를 숙입니다

비문학

사형 제도가 정당하다고 생각하는지 그 이유와 함께 서술하세요
(최소 네 문단 ~ 최대 여섯 문단최소 1,000자 ~ 최대 1,200자 – 띄어쓰기 미포함)

(글자수 세 주는 사이트 많이 있습니다. 직접 세지 말고 사이트 이용하세요^^)

2014년 4월 5일 토요일

제 2회 수학 능력 시험 답

이번 회 답안에서는 문제 분석과
각 문제에서 가장 높은 배점을 받은 응시자의 풀이
(만약 없다면 모범 풀이)를 올리도록 하겠습니다.

1. 답 5점, 답이 틀리면 점수 없음.
단순히 문제 이해만 하고 열심히 계산해주면 됩니다.
제가 생각했던 모범 풀이보다 좋은 풀이가 있어 올립니다.
mk34252@naver.com의 풀이입니다.

0+0=0

0+1=1
1+1=2

0+4=4
1+4=5
4+4=8

0+9=9
1+9=10
4+9=13
9+9=18

0+16=16
1+16=17
4+16=20
9+16=25
16+16=32

0+25=25
1+25=26
4+25=29
...

이를 순서대로 늘어놓으면 0-1-2-4-5-8-9-10-13-16-17-18-20-25-26
(5/5)

2. 맞는 풀이 10점, 논리적 오류 5점 감점.
단순한 인수분해 발상을 할 수 있느냐를 묻는 문제입니다.
kawaii.fourier@gmail.com의 풀이입니다.

\(x=a^2+b^2\)(\(a\), \(b\)는 정수)로 표시하면 \(2x = 2a^2 + 2b^2 = (a+b)^2 + (a-b)^2 \in S\)이다.
(10/10)

3. 맞는 풀이 25점, 논리적 오류 5점 감점.
귀류법을 이용할 수 있는가를 묻는 문제입니다.
모범 풀이입니다.

어떤 \(x \in S\)이 \(4k+3\)(\(k\)는 정수)꼴로 쓸 수 있다고 가정하고 모순을 이끈다.
우선 제곱수를 4로 나누었을 때 나머지를 알아보자. 정수 \(a\)에 대해 \(a^2\)은
i) \(a = 4m \Rightarrow a^{2}=16m^{2} = 4 \cdot 4m^{2}\)
ii) \(a = 4m + 1 \Rightarrow a^{2}=16m^{2}+8m+1 = 4(4m^{2}+2m)+1\)
iii) \(a = 4m + 2 = 2(m + 1) \Rightarrow a^{2} = 4(m+1)^{2}\)
iv) \(a = 4m + 3 \Rightarrow a^{2} = 16m^{2} + 24m + 9 = 4(4m^{2} + 6m + 2) + 1\)
(단, \(m\)은 정수)
따라서 제곱수는 항상 4로 나눈 나머지가 0 또는 1이다.
그렇다면 제곱수 두 개를 더해서 4로 나눈 나머지가 3,
다시 말해 \(4k + 3\) 꼴을 만드는 것은 불가능하다.
따라서 모순이 유도되고, 준 명제는 성립한다.

Note) 대우 자체의 내용은 중등 2년 과정이나, 어떤 명제가 참이면 대우도 참이라는 내용은 개정 전 고등 1년에 진리집합을 배우면서 증명됩니다. 따라서, 이 성질을 이용하신 분은 부득이하게 감점(15점) 처리했습니다.

4 (1). 맞는 풀이 15점, 논리적 오류 5점 감점.
2번 문제의 역의 강한 형태입니다. 홀짝성의 성질을 알고 있느냐를 묻는 문제입니다.
kawaii.fourier@gmail.com의 풀이입니다.

\(2x = a^{2} + b^{2}\)가 짝수이므로 \(a\), \(b\)가 모두 짝수이거나, 모두 홀수이다.
따라서 그 합과 차는 항상 짝수이다.
그러므로, \(x = \frac{a^{2}+b^{2}}{2}=\left(\frac{a+b}{2}\right)^{2} + \left(\frac{a-b}{2}\right)^{2} \in S\)이다.


4 (2). 풀이 35점, 논리적 오류 5점 감점.
복잡한 수준의 인수분해를 원하는 꼴로 할 수 있는가를 묻는 문제입니다.
모범 풀이입니다.

\(x=a^{2} + b^{2}\), \(y=c^{2}+d^{2}\) (\(a\), \(b\), \(c\), \(d\)는 정수)라고 하면,
\(xy = (a^{2} + b^{2})(c^{2} + d^{2}) = (ac)^2 + (bd)^2 + (ad)^2 + (bc)^2\)
\(= (ac)^2 + 2(ac)(bd) + (bd)^2 + (ad)^2 - 2(ad)(bc) + (bc)^2\)
\(= (ac + bd)^2 + (ad - bc)^2 \in S\)이다.


준비중입니다.

2014년 3월 23일 일요일

제 2회 수학 능력 시험 문제

모바일에서 TeX이 깨져서
오류 수정했습니다.
그래서 30분 연장합니다.
22시까지 답안을 받겠습니다.
현재 한 명도 보내지 않았습니다.

유의사항

  1. 답안은 반드시 k2pa00@gmail.com으로 보내주시기 바랍니다.
  2. 여기에서 말했듯이, 성적 상위 4명은 놀먹에 들어오실 수 있는 자격이 주어집니다.
    하지만 놀먹에 들어오지 않으셔도 상관이 없기 때문에
    답안에 "놀먹에 들어가겠다/들어가지 않겠다"를 명확히 해 주세요.
  3. '선택 문항'에 해당되는 문제는 푼 문제들 중 가장 높은 득점을 맞은 문제만
    그 문제들의 전체 득점으로 처리됩니다. 예를 들어 선택 문항인 1번~4번에서
    그 중 가장 높은 득점을 가진 4번만 정확히 풀어도 만점을 받을 수 있습니다.
  4. 정확한 채점 기준은 모든 답안지 회수 후 21시 30분 이후에 공개될 예정입니다.
  5. 모든 문제는 중학교 과정 안에서 풀어야 합니다.
    그렇지 않을 경우 답에 해당하는 점수만 받으실 수 있습니다.
  6. 모든 문제에서 정확한 풀이과정을 적어 주세요. 적지 않을 경우 감점이 있습니다.
  7. 문제 이상이 있으시면 언제든 제 메일로
    해당 문제의 번호와 그렇게 생각한 이유를 보내 주세요.

배점

05점 | 1문제 | 01번
10점 | 3문제 | 02번 07번 09번
15점 | 2문제 | 03번
20점 | 1문제 | 10번
30점 | 1문제 | 05번 08번
40점 | 2문제 | 06번 11번
50점 | 1문제 | 04번
70점 | 1문제 | 12번
총 12문제, 예상 최대 득점 200점.
문제 옆의 대괄호 점수는 그 문제 혹은 문제들을 풀어서 받을 수 있는 최대 점수입니다.

01~04 [선택 문항] 집합 \(S\)를 정수 \(a\), \(b\)에 대해 \(a^2 + b^2\) 꼴로 나타낼 수 있는 수들의 집합이라고 생각합시다. 예를 들어, \(53 = 2^2 + 7^2\)이므로 \(53 \in S\)이고, \(89 = 5^2 + 8^2\)이므로 \(89 \in S\)입니다. [50점]

  01 \(S\)의 모든 원소들을 작은 순서대로 늘어놓았을 때 \(15\)번째에 오는 값을 구하세요. [5점]

  02 \(x \in S\)이면 \(2x \in S\)임을 증명하세요. [10점]

  03 \(k\)가 정수일 때 \(x = 4k + 3\)이라면 \(x \not \in S\)임을 증명하세요. [25점]

  04 [50점]
    01 \(x\)가 정수일 때 \(2x \in S\)이면 \(x \in S\)임을 증명하세요. [15점]
    02 \(x \in S\)이고 \(y \in S\)이면 \(xy \in S\)임을 증명하세요. [35점]



05~06 [선택 문항] [40점]

  05 ∠C가 직각인 삼각형 ABC가 있습니다. AC 위에 AD = 2DC인 점 D를 잡습니다. D에서 AB에 내린 수선의 발을 H라고 하고, BDCH의 교점을 P라 합니다. BDCH일 때 BP : PD를 구하세요. [30점]

  06 \(x^4+x^3+2x^2+2x+1=0\)의 실수해가 없음을 증명하세요. [40점]

07~08 바닥(floor) 함수는 실수 \(x\)보다 크지 않은 최대 정수로 정의되는 함수이며, 기호로 \(\left \lfloor x \right \rfloor\)을 사용합니다. [40점]

  07 \(3\) 이상의 정수 \(a\)에 대해 \(x = a + \frac{1}{a}\)일 때, 다음 식을 \(a\)에 관한 다항식으로 간단히 하세요. [10점]       \[\left \lfloor x + x \left \lfloor x + x \left \lfloor x \right \rfloor \right \rfloor \right \rfloor\]
  08 \(\left \lfloor x \right \rfloor\)는 \(a_{n}x^{n} + a_{n-1}x^{n-1} + \cdots + a_{2}x^{2} + a_{1}x + a_0\) (단, \(a_0, a_1, \cdots, a_n\)은 모두 상수)의 꼴로 나타낼 수 없음을 증명하세요. [30점]



09~12 [선택 문항] 각 문제의 조건에 맞는 정수 \(x\)를 구하세요. 만약 여러 개라면 모두 구하세요. [70점]

  09 [10점]       \[x^2 - 7x + 10 = 0\]
  10 (\(\left \lfloor x \right \rfloor\)는 \(x\)보다 크지 않은 최대 정수입니다.)[20점]       \[\frac{x}{2} - \left \lfloor \frac{x}{4} \right \rfloor = \frac{1}{2}\]
  11 [40점]       \[x \sin {x}^{\circ} = 15\]
  12 [70점]       \[x^3 + 3x^2 - 6x + 2 = 0\]

2014년 1월 14일 화요일

제 1회 놀먹 C언어 능력 시험 29번 문제 풀이

코드 풀이는 간단합니다.

#include <stdio.h>

int main() {

    int a, b, cnt = 0;
    for (a=1; a<50; ++a) {
        for (b=1; b<50; ++b) {
            if ((a + b) == (a | b)) {
                ++cnt;
            }
        }
    }
    printf("%d\n", cnt);
    return 0;
}
// 516 출력

코드를 작성하지 않고 푸는 풀이는 다음과 같습니다.

우선 식을 변형하겠습니다. 이진법의 계산과 받아올림의 원리에 따라
a + b = (a ^ b) + (a & b) << 1
모든 양수 c에 대해서 c << 1은 c * 2이므로,
a + b = (a ^ b) + (a & b) * 2 = (a ^ b) + (a & b) + (a & b)
f(a, b) = (a ^ b) + (a & b)라고 잡고 a, b에 따른 계산을 해 주면
f | 0 | 1
--+---+---

0 | 0 | 1
--+---+---
1 | 1 | 1
f(a, b) = a | b라는 결론을 간단하게 내릴 수 있으므로,
주어진 조건문은 a | b == (a | b) + (a & b)가 되므로
그것을 a & b == 0으로 간단하게 바꿀 수 있습니다.

a의 비트가 xyz라고 합시다. 만약 x가 0이라면, b의 x 자리에는 임의의 비트(2가지의 경우)가 올 수 있습니다. 만약 x가 1이라면, b의 x 자리에는 반드시 0 비트(1가지의 경우)가 와야 합니다. 따라서 a가 정해져 있을 때, b가 될 수 있는 개수는 2(a의 0인 비트의 개수)개입니다.

i) 1 ≤ a < 32, 1 ≤ b < 32(XXXXX, a 기준으로 변하는 비트 5개)인 경우에는,
1) 0이 하나도 없음: 5C020 = 1
2) 0이 하나 있음: 5C121 = 10
3) 0이 두 개 있음: 5C222 = 40
4) 0이 세 개 있음: 5C323 = 80
5) 0이 네 개 있음: 5C424 = 80
각각의 경우에서, b ≠ 0이므로 이 경우 31가지를 제외하면
합: 1 + 10 + 40 + 80 + 80 - 31 = 180
ii) 1 ≤ a < 32, 32 ≤ b < 48(10XXXX, b 기준으로 변하는 비트 4개)인 경우에는,
1) 0이 하나 있음: 4C021 = 2
2) 0이 두 개 있음: 4C122 = 16
3) 0이 세 개 있음: 4C223 = 48
4) 0이 네 개 있음: 4C324 = 64
4) 0이 다섯 개 있음: 4C425 = 32
각각의 경우에서, b ≠ 0이므로 이 경우 16가지를 제외하면
합: 2 + 16 + 48 + 64 + 32 - 16 = 146
iii) 1 ≤ a < 32, 48 ≤ b < 50(b 기준)인 경우에는,
1) b = 48(110000(2)) : 24 - 1 = 15
2) b = 49(110001(2)) : 23 - 1= 8
각각의 경우에서, b ≠ 0이므로 이 경우 2가지를 제외하면
합: 16 + 8 - 2 = 22
iv) 32 ≤ a < 48인 경우에는 32 ≤ b인 경우가 존재할 수 없으므로, a와 b를 바꾸면 ii)와 같아지고, 순서만 뒤바뀐 것입니다. 따라서 개수는 ii)에서 구했던 그대로 146
v) 48 ≤ a ≤ 50인 경우에는 32 ≤ b인 경우가 존재할 수 없으므로, a와 b를 바꾸면 iii)와 같아지고, 순서만 뒤바뀐 것입니다. 따라서 개수는 iii)에서 구했던 그대로 22

모두 더하면, 180 + 146 + 22 + 146 + 22 = 516

출제진들은 여러분들이 당연히 프로그래밍할 거라고 생각했습니다.
일단 이렇게도 풀 수 있지만 이렇게 풀면 정말로 약 빤거죠 저도 쓰면서 여러번 실수했는데
고, 불가능한 건 없습니다. 혹시 풀이가 이해 안 되시면 댓글 달아주세요.

2014년 1월 13일 월요일

제 2회 C언어 시험 계획

안녕하세요, kipa00입니다.

SecondMk를 수정 인용:

1회 C언어 시험(2013학년도 12월 놀먹 C언어 능력시험)에 이어서,
2회 C언어 시험을 열 계획입니다.
전체적인 시험은 이전 시험과 같습니다만,
이전 시험에서의 경험을 바탕으로 보완을 하고자 합니다.

문법 문항 수 감축


문법을 직접적, 간접적으로 묻는 문제들이 굉장히 많았습니다. 거의 절반이었죠...
게다가, 실제로는 사용될 일이 거의 없는 문법을 묻는 문제들도 있었습니다.
그래서 2회 시험에서는 문법 문항 수를 확실히 줄이겠습니다.
대신, 알고리즘을 묻는 문제들의 비중을 높이겠습니다.

평균 60점대


전 솔직히 1회 시험에서 평균 60점을 예상했습니다만, 평균 40.36점이 나오더군요 ㅋㅋㅋ
출제 중에 출제자들 사이에서 평균 80점 나오면 어떡하냐[1]는 이야기가 나오기도 했는데,
응시자 최고점이 79점...
문법을 묻는 문제들이 많았던 탓이 큰 것 같습니다.
어려운 문제들, 특히 낚시 문제들은 거의 없도록 하겠습니다.
실제 실력이 드러날 수 있는 시험문제를 만들도록 하겠습니다.

시험 시간


저번 시험에는, 사실 시험 시간이 조절 실패였죠. 20분 추가의 번복이 있었고...
시험 시간이 몇 분이 될지는 아직 모르겠습니다만, 적절하게 조절하도록 하겠습니다.

그리고, 응시자 여러분들께서 29번 문제를 아무도 풀지 못했다는 것에 의문이 좀 드는데...
시험 문제는 컴퓨터를 사용해서 풀어도 아무 상관이 없습니다.
그리고 29번[2]과 30번은 코딩해서 풀어내지 않으면 답을 찾는 게 사실상 불가능했고요.
다음 시험에서는 컴퓨터를 잘 활용하시길...!

시험 일은 언제가 될지 아직까지 정확히는 모르겠습니다.
시험 문제 출제 이후에 자세한 내용을 발표하도록 하겠습니다.

2013학년도 12월 C언어 능력시험 문제보기 → 여기를 클릭

<각주>
[1] 제가 그랬습니다. 그 때 암겨혀님이랑 더 복잡하게 내자고 했던 것도 기억납니다.
[2] 29번 문제, 컴퓨터 없이 풀이: 식을 변형하면 a & b가 0이 되는 것을 찾아주면 된다는 것을 쉽게 알 수 있습니다. 따라서 1 ≤ a < 32, 32 ≤ a < 48, 48 ≤ a일 때 비트를 고려하여 b의 개수를 세어 주신 다음 모두 더하면 됩니다. 자세한 풀이는 여기서 보실 수 있습니다.

덧붙여 말씀드립니다. 저는 제 2회 C언어 29번, 30번 출제자입니다.
이번 29번, 30번 문제도 프로그래밍하셔서 푸셔도 되고, 그렇게 하셔야 합니다.
29번, 30번 문제의 풀이는 먼저 알고리즘을 설명한 뒤,
그에 맞는 코드를 보이는 방식으로 하겠습니다.
그 외 다른 알고리즘 문제들의 풀이가 어떻게 적힐는지 모르겠습니다만,
대체로 이 방식(코드가 필요없으면 알고리즘만 보임)이 될 것 같습니다.

이상입니다. 감사합니다. kipa00

2013년 12월 14일 토요일

제 1회 수학 능력 시험 결과

제 1회 수학 능력 시험의 결과입니다.

영역별로 점수를 묶어서 채점했습니다.
제 1 영역은 1번~4번,
제 2 영역은 5번~6번,
제 3 영역은 7번~8번,
제 4 영역은 9번~12번입니다.

채점 결과는 이의 제기시 재검토후 바뀔 수 있습니다.
이의제기는 12월 16일 0시 직전까지 받습니다.
앞에 naver가 붙은 사람은 네이버 id입니다.

검토위원 놀먹 시간 초과로 실격

1. TaeK : 2등급 (10%)
1. 50
2. 40
3. 15
4. 70

total 175

2. naver waylight3 : 3등급(20%)
1. 40
2. 35
3. 0
4. 30

total 105

3. (이름 공개 거부): 4등급(30%)
1. 50
2. 40
3. 0
4. 10

total 100

4. 강건: 4등급(40%)
1. 15
2. 35
3. 15
4. 15

total 80

5. naver yvonne3799: 5등급(50%)
1. 35
2. 0
3. 0
4. 10

total 45

6. H Star: 5등급 (60%)
1. 5
2. 15
3. 0
4. 10

total 30

7. naver dollmon14: 6등급 (70%)
1. 0
2. 5
3. 0
4. 25

total 30

8. naver wlzla000: 7등급 (80%)
1. 0
2. 15
3. 0
4. 10

total 25

9. SecondMk: 8등급 (90%)
1. 5
2. 0
3. 0
4. 10

total 15

10. naver yclee2001: 9등급 (100%)
1. 0
2. 5
3. 0
4. 0

total 5

behind story. 놀먹 회원인 '플래시신(kipa00)'님이 이 문제를 출제하셨습니다. 이 분이 말씀하시길 시간 안에 135점을 맞은 중3이 있었으나, 문제 최초 열람이 12월 11일이어서 너무 늦어 등급에 넣지 못하셨다고 합니다.

관계자를 제외한 응시인원이 4명 미만이라 모집하지 않기로 했습니다. C언어 영역에서 좋은 결과 있길 바랍니다!

놀먹 C언어 능력 시험 문제

모양이 다릅니다. 제대로 된 모양으로 보시려면 이곳으로 이동해주세요.

2013학년도 12월 놀먹 C언어 능력시험 문제지
C언어 영역

1. 다음 중 입출력 방향이 가장 다른 함수는? [2점]
① printf
② scanf
③ puts
④ fprintf
⑤ putchar

2. 16진수 0x1234를 10진수로 표현한 값은? [2점]
① 1234
② 2947
③ 4660
④ 6762
⑤ 11064

3. 다음 중 존재하지 않는 특수 문자(escape sequence)는? [2점]
① \c
② \\
③ \v
④ \r
⑤ \'

4. sizeof("String") + sizeof('\n')의 값은? [3점]
① 7
② 8
③ 9
④ 10
⑤ 11

5. 다음 소스의 입력한 값이 2일 때 출력한 값은? [3점]
int x;
scanf("%d", &x);
printf("%d\n", x^x);

① 0
② 1
③ 2
④ 3
⑤ 4

6. a = 20일 때, 8 + a >> 2의 값은? [3점]
① 7
② 9
③ 11
④ 13
⑤ 15

7. 주어진 a, b 값에 따른 다음 소스의 출력 값이 다른 하나는? (단, double의 유효 자리는 10진법 소수 12자리까지이다) [3점]
int a, b;
double c;
scanf("%d %d", &a, &b);
c = a / b;
printf("%lf\n", c);

① a=2, b=1
② a=4, b=3
③ a=6, b=5
④ a=8, b=7
⑤ a=10, b=9

8. 주어진 입력 값에 따른 출력 값이 다른 하나를 고르시오. (단, sizeof(int) = 4이다.) [3점]
int a;
scanf("%d", &a);
printf("%d", (a >> 31));

① -3
② 0
③ 1
④ 3
⑤ 16

9. 010 - 2의 값은? [3점]
① 0
② 2
③ 4
④ 6
⑤ 8

10. 주어진 입력 값에 따른 출력 값이 다른 하나를 고르시오. [3점]
#include <stdio.h>

int main(void) {
    int n;

    scanf("%d", &n);

    if (n % 3 == 0) printf("+");
    else if (n % 4 == 0) printf("-");
    else printf("%d", n);

    return 0;
}

① 3
② 8
③ 21
④ 54
⑤ 84

11. 주어진 입력 값에 따른 두 소스의 출력 값이 다른 하나를 고르시오. [3점]
int n;
scanf("%d", &n);
if (n % 6 == 1) printf("OK");
int n;
scanf("%d", &n);
if (n % 7 == 1) printf("OK");

① 43
② 127
③ 169
④ 253
⑤ 378

12. nolmuck(999)의 값은? [3점]
int nolmuck(int n) {
    int result;

    result = n / 100;
    result += (n % 100) / 10;
    result += n % 10;

    return result;
}

① 9
② 10
③ 27
④ 81
⑤ 90

[13~14] 아래의 소스에 대하여 13번과 14번의 두 물음에 답하시오.
int i, n, result = 1;

scanf("%d", &n);
for (i=1; i<=n; i++) result *= i;

13. (result % 10)의 결과가 다른 n의 값은? [3점]
① 4
② 5
③ 6
④ 7
⑤ 8

14. (result % 100)의 값이 (n^n)의 값과 같아지는 최소의 n의 값은? [4점]
① 1
② 2
③ 4
④ 5
⑤ 10

15. 다음 중, 반복의 횟수가 다른 하나는? [4점]
① for (i=0; i<10; i++);
② for (i=1; i<=10; i++);
③ for (i=20; i>0; i-=2);
④ for (i=0; i<=10; i++);
⑤ for (i=10; i>=1; i--);

16. 아래의 소스에 대하여 올바른 설명만을 <보기>에서 있는 대로 고른 것은? [4점]
int array[7] = {78, 79, 76, 77, 85, 67, 75};
int i;
for (i=0; i<7; i++)
    printf("%c", array[i]);


ㄱ. 출력 결과는 "NOLMUCK"이다.
ㄴ. array[2]의 값과 sizeof(array[5]) * 19의 값은 같다.
ㄷ. array[7]의 값은 75이다.

① ㄱ
② ㄷ
③ ㄱ, ㄴ
④ ㄴ, ㄷ
⑤ ㄱ, ㄴ, ㄷ

17. <보기>는 Ellipse 함수에 대한 설명이다. Ellipse 함수를 사용하여 다음과 같은 모양의 두 타원(동심원)을 그리는 소스로 가장 적절한 것은? [4점]

void Ellipse(int, int, int, int);
Ellipse 함수는 타원을 그리는 함수이다.

첫 번째 인수는 그려지는 타원의 경계 사각형의 왼쪽 위 모서리의 X 좌표이며,
두 번째 인수는 그려지는 타원의 경계 사각형의 왼쪽 위 모서리의 Y 좌표이며,
세 번째 인수는 그려지는 타원의 경계 사각형의 오른쪽 아래 모서리의 X 좌표이며,
네 번째 인수는 그려지는 타원의 경계 사각형의 오른쪽 아래 모서리의 Y 좌표이다.

사용 예) Ellipse(100, 100, 200, 200);

① Ellipse(100, 100, 200, 200); Ellipse(125, 125, 175, 175);
② Ellipse(100, 100, 200, 200); Ellipse(150, 150, 250, 250);
③ Ellipse(150, 150, 200, 200); Ellipse(100, 100, 150, 150);
④ Ellipse(100, 150, 150, 200); Ellipse(150, 100, 200, 200);
⑤ Ellipse(100, 150, 200, 200); Ellipse(100, 150, 150, 200);

18. secondmk 함수가 다음과 같을 때, 다음 중 가장 큰 값은? [4점]
int secondmk(int a, int b, int c) {
    int result = (a > b) ? a : b;
    result = (result > c) ? result : c;
    return result;
}

① secondmk(10, 20, 30);
② secondmk(15, 25, 35);
③ secondmk(35, 15, 25);
④ secondmk(50, 50, 50);
⑤ secondmk(12, 34, 56);

19. 항상 옳은 것만을 <보기>에서 있는 대로 고른 것은? [4점]
ㄱ. 임의의 양의 정수 a, n에 대하여 (a & n) <= a이다.
ㄴ. 임의의 양의 정수 a, n에 대하여 (a | n) >= a이다.
ㄷ. 임의의 양의 정수 a, n에 대하여 (a & n) <= (a | n) <= a + n이다.

① ㄱ
② ㄷ
③ ㄱ, ㄴ
④ ㄴ, ㄷ
⑤ ㄱ, ㄴ, ㄷ

20. 다음은 1부터 1 이상의 입력받은 수까지의 합을 출력하는 소스의 일부이다.
int n, i;
int sum = (가);
scanf("%d", &n);
for (i=(나); i<=n; i++) sum += i;
printf("%d", sum);

위의 (가)에 알맞은 양의 정수를 f, (나)에 알맞은 양의 정수를 g라 할 때, (11 * f + 12 * g)의 값은? (단, f와 g는 100,000 미만의 수이다.) [4점]
① 11
② 12
③ 24
④ 33
⑤ 35

21. 항상 옳은 것만을 <보기>에서 있는 대로 고른 것은? [4점]
ㄱ. 임의의 양의 정수 a에 대하여 a ^ 0 == a이다.
ㄴ. 임의의 양의 정수 a, b에 대하여 a ^ b == b ^ a이다.
ㄷ. 임의의 양의 정수 a, b, c에 대하여 a ^ (b ^ c) == (a ^ b) ^ c이다.
① ㄱ
② ㄴ
③ ㄱ, ㄷ
④ ㄴ, ㄷ
⑤ ㄱ, ㄴ, ㄷ

22. (5 ^ k) * 4 + (8 % 2)의 값이 0이 되는 k의 값은? [3점]

23. 임의의 양의 정수 a에 대하여, (a & (b - 5)) ^ a와 a | (b2-2b-15)의 값을 같게 하는 양의 정수 b는? [3점]

24. 다음 소스는 10개의 값을 입력받아, 입력받은 값들의 합을 출력하는 소수의 일부이다. 이때, (A)에 알맞은 임의의 정수를 p, (B)에 알맞은 임의의 정수를 q라고 할 때, q - p의 값을 구하시오. [3점]
int input;
int sum = 0, i;
for (i=(A); i<(B); i++) {
    scanf("%d", &input);
    sum += input;
}
printf("sum: %d", sum);

25. 아래의 소스를 실행하였을 때에, 최종적으로 화면에 보이는 문자의 개수를 구하시오. (공백 포함) [3점]
printf("Hello, world!\rHello\0 World!");

26. 다음은 보기의 지문을 참고하여 만든, 연도를 입력받아 윤년을 판별하는 코드의 일부이다. 이때, (A), (B), (C)에 알맞은 양의 정수를 각각 p, q, r이라고 할 때, p+q+r의 값은? [4점]

<보기> 윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해이다. 태양년은 정수의 하루로 나누어 떨어지지 않고, 달의 공전주기와 지구의 공전주기는 다르기 때문에 태양력에서는 하루(윤일), 태음태양력에서는 한 달(윤달)을 적절한 시기에 끼워서 이를 보정한다.

태양력에서는 보통 윤일이 들어 있는 해를 말하는데, 이 경우 1년은 366일이 되며 이것이 바로 윤년이다. 지구가 태양을 한 바퀴 도는 데에는 365일 5시간 48분 46초가 걸리므로 365일을 제외한 시간들을 모아 태양력에서는 4년마다 한 번 2월 29일을 두어 하루를 늘리고, 태음력에서는 평년이 354일이므로 계절과 역월(曆月)을 조절하기 위하여 19년에 7번의 비율로 윤달을 끼워 1년을 13개월로 한다.[1] 윤년이 아닌 해는 평년이라고 한다.
.... (생략) ...
현재 전세계 대부분의 나라에서 쓰는 그레고리력은 4년에 반드시 하루씩 윤날(2월 29일)을 추가하는 율리우스력을 보완한 것으로, 태양년과의 편차를 줄이기 위해 율리우스력의 400년에서 3일(세 번의 윤년)을 뺐다.

그레고리력의 정확한 윤년 규칙은 다음과 같다.
서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다.(2004년, 2008년, 2012년…)
이 중에서 100으로 나누어 떨어지는 해는 평년으로 한다.(2100년, 2200년, 2300년…)
그 중에 400으로 나누어 떨어지는 해는 윤년으로 둔다.(1600년, 2000년, 2400년 …)
즉, 400년에 97년은 윤년이 되며, 1년은 평균 365.2425일이 된다. 이는 춘분점을 기준으로 한 태양년보다 0.0003일(26초)이 길기 때문에, 약 3,300년마다 1일의 편차가 난다. (출처 : 위키백과)

int year;
printf("연도 입력: ");
scanf("%d",&year);

if(year%(A)==0) {
 if(year%(B)==0) {
  if(year%(C)==0) printf("윤년");
  else printf("평년");
 } else {
  printf("윤년");
 }
} else {
 printf("평년");
}

27. 다음은 달(月)을 입력받아 그 달의 날 수를 출력하는 소스의 일부이다. (A), (B), (C)에 알맞은 양의 정수를 각각 p, q, r이라 할 때, p+q+r의 값을 구하세요. (단, 윤년 처리는 무시하고 모두 평년으로 처리합니다.) [4점]

int month;

scanf("%d", &month);
switch(month) {
    case 2: printf("%d", (A)); break;
    case 1: case 3: case 5: case 7: case 8: case (B): case 12: printf("31"); break;
    case 4: case 6: case 9: case 11: printf("%d", (C)); break;
}

28. 다음은 임의의 정수를 입력받아, 그 정수의 약수를 출력하는 소스의 일부이다. 이 때, (A)와 (B)에 알맞은 양의 정수를 각각 p, q라 할 때, (p ^ q) | (p & q)의 값을 구하시오. [4점]

int input, i;
scanf("%d", &input); /* 1 이상의 정수를 입력 받는다. */

printf("1 ");
for (i=(A); i<=input; i++) {
    if (input % i == (B)) printf("%d ", i);
}

29. 50 미만의 임의의 양의 정수 a, b에 대하여 a | b = a + b를 만족하는 (a, b)의 순서쌍의 개수를 구하시오. [4점]

30. 1, 1, 2, 3, 5, 8, 13, 21, ... 과 같이 나열되는 수가 있다. 이때, 14930352는 몇 번째 수인지 구하세요. [4점]