공통 문제 마지막 파트다.
문제 21.
함수 f(x)=x3+ax2+bx+4 가 다음 조건을 만족시키도록 하는 두 정수 a,b에 대하여 f(1)의 최댓값을 구하시오.
모든 실수 α에 대하여 lim 의 값이 존재한다.
Code
using Roots
max_var = 50
var_range = [(-max_var + i, -max_var +j) for i in 1:2*max_var for j in 1:2*max_var]
f(x; a, b) = x^3 + a*x^2 + b*x + 4
function is_sln_valid(vec1::Vector, vec2::Vector)
for x in vec1
if !any(abs.(vec2 .- x) .< 0.0001)
return false
end
end
true
end
function is_pair_valid(pair)
(a, b) = pair
sln1 = find_zeros(x -> f(x; a, b), (-100, 100))
sln2 = find_zeros(x -> f(2x+1; a, b), (-100, 100))
is_sln_valid(sln1, sln2)
end
ans_candidates = filter(is_pair_valid, var_range)
map_fn_val = (pair -> f(1; a=pair[1], b=pair[2]))
println(ans_candidates)
ans = maximum(map_fn_val.(ans_candidates))
Output
[(-2, 1), (-1, 2), (0, 3), (1, 4), (2, 5), (3, 6), (4, 7)]
16
설명
- 답이 가능한 순서쌍 (a, b)의 범위는 총 2500개로 잡았다. 사실 작은 범위에서부터 시작해서 답을 찾아보는 것이 기본인데, 어차피 작은 숫자 아니면 답 안나온다는 것을 알 수 있어서, 충분히 큰 숫자를 안잡아도 된다는 사실을 확인하고 설정하자 (계산 시간도 고려할 겸)
- 사용한 수학적 지식은 문제에서 주어진 극한값이 존재하기 위해서는 f(x) = 0이 되는 모든 x에 대해서 f(2x+1)=0을 만족 해야 하고, f(x)에서의 해의 차수가 f(2x+1)에서의 해의 차수보다 높지 않아야 한다. 그런데 차수가 높지 않아야 한다는 조건을 빼먹었다.
Zygote
패키지를 사용해서 미분한 함수에 대해서 같은 조건을 다시 적용하면 된다. - 사실 위에 이렇게 설명했지만, 더 자세한 이유는 함수가 3차함수이고 정수 (a, b)에 대해서 지금 상수항이 4일 경우에 f(x) = (x - c)^3을 만족하는 실수 c가 존재하지 않기 때문이다. 그렇기 때문에 2차조건까지만 체크하면 된다.
- 해로 가능한 정수 (a, b)의 순서쌍이 첫 번째 줄에 출력되었고, 그에 따라서 f(1)의 최댓값을 구하면 16이다.
문제 22.
모든 항이 정수이고 다음 조건을 만족시키는 모든 수열 {a_n} 에 대하여 |a_1|의 값의 합을 구하시오.
(가) 모든 자연수 n에 대하여
a_{n+1} = \begin{cases} a_n - 3 \qquad (|a_n|이 \ 홀수인 \ 경우) \\ \frac{1}{2} a_n \qquad (a_n = 0 \ 또는\ |a_n|이 \ 짝수인 \ 경우) \end{cases}
(나) |a_m| = |a_{m+2}| 인 자연수 m의 최솟값은 3이다.
Code
n_max_len = 5
a1_range = [-100+i for i in 0:200]
a1_candidates = []
for a1 in a1_range
a = [i < 2 ? a1 : undef for i in 1:n_max_len]
for i in 2:n_max_len
if a[i-1]%2 == 0
a[i] = a[i-1]÷2
else
a[i] = a[i-1]-3
end
end
if abs(a[1]) != abs(a[3]) && abs(a[2]) != abs(a[4]) && abs(a[3]) == abs(a[5])
append!(a1_candidates, a1)
end
end
println(a1_candidates)
sum(abs.(a1_candidates))
Output
Any[-24, -9, 6, 7, 8, 10]
64
설명
- 모든 항이 정수라는 문제 조건 같은 것을 보면 계산하기 제일 쉽다. 사실 실수가 다루기 어려운 거지, 정수에 대해서는 아주 여유로운 초항 범위에 대해서 스캔해주면 된다
- (나)의 조건에서 어차피 a_n은 a_5까지만 계산하면 되므로, 아주 쉽다
- 가능한 초항은 [-24, -9, 6, 7, 8, 10] 이다
- 근데 (가) 조건을 읽으면 수능에서까지 a_n = 0 또는 |a_n|이 짝수인 경우 라고 쓰고 있는데 ㅋㅋ 왜 도대체 어떤 이유에서 그냥 짝수라고 하면되지, 0을 따로 분리해서 말하는지 모르겠다
이렇게 해서 수능 공통문제에 대한 것들은 대략 마쳤다. 처음 해 본 시도였는데, 덕분에 Symbolics
도 써보고 유익한 경험이었다. 다음으로는 선택문제들을 풀게 될 것인데, 아마도 기하와벡터가 제일 쉬울것 같으므로 기하와벡터 문제들부터 커버하겠다.
반응형
'수능문제풀이' 카테고리의 다른 글
2025 수능 수학영역 풀이 - 기하와 벡터 29 (홀수형) (1) | 2024.11.16 |
---|---|
2025 수능 수학영역 풀이 - 기하와 벡터 30 (홀수형) (0) | 2024.11.16 |
2025 수능 수학영역 풀이 - 공통문제 (16~20, 홀수형) (5) | 2024.11.16 |
2025 수능 수학영역 풀이 - 공통문제 (12~15, 홀수형) (1) | 2024.11.15 |
2025 수능 수학영역 풀이 - 공통문제 (1~11, 홀수형) (2) | 2024.11.15 |