새소식

Math

23학년도 6월 모의평가 수학 21번 Python

  • -

2022.06.09. 시행된 2023학년도 대학수학능력시험 6월 모의평가 수학 21번 문제를 프로그래밍으로 해결하는 글이다.

문제

자연수 n에 대하여 $4\log_{64}\left(\frac{3}{4n+16}\right)$ 의 값이 정수가 되도록 하는 1000 이하의 모든 $n$의 값의 합을 구하시오.

풀이

로그 밑인 64는 $2^6$ 이므로, 식을 다음과 같이 정리할 수 있다:

$$
\frac{2}{3}\log_{2}\left(\frac{3}{4n+16}\right)
$$

이 값이 정수가 되려면 $\log_{2}\left(\frac{3}{4n+16}\right)$ 의 값이 3 또는 -3의 배수가 되어야 한다. 먼저 $n$이 자연수일때 $\frac{3}{4n+16}$ 은 $2^3$, $2^6$, $2^9$ ... 가 될 수 없다. 따라서 $2^{-3}$, $2^{-6}$, $2^{-9}$ ... 가 되는 경우를 생각해보자.

$$\frac{3}{4n+16} = \frac{1}{8} = \frac{3}{24}, 4n=8, n=2$$

$$\frac{3}{4n+16} = \frac{1}{64} = \frac{3}{192}, 4n=176, n=44$$

$$\frac{3}{4n+16} = \frac{1}{512} = \frac{3}{1536}, 4n=1520, n=380$$

$$\frac{3}{4n+16} = \frac{1}{4096} = \frac{3}{12288}, 4n=12272, n=3068$$

$$ ... $$

$\log_{2}\left(\frac{3}{4n+16}\right)$ 이 -12가 되면 $n$의 값은 1000을 초과한다. 따라서 1000 이하의 자연수 $n$의 값의 합은 $2+44+380=426$이다.

코드

import math
res = 0
for n in range(1, 1001):
    val = 2/3*math.log2(3/(4*n+16))
    if val == int(val):
        res += n
print(res)

어떤 수 $x$가 정수인지 판별하려면 $x$와 $x$를 정수형 타입으로 바꾼 값이 일치하면 $x$는 정수라고 말할 수 있다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.