| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 33913 |
| 문제명 | even 하게 익은 SCON |
| 레벨 | 실버 1 |
| 분류 |
DP, 수학 |
| 시간복잡도 | O(logn) |
| 인풋사이즈 | n<=1,000,000 |
| 사용한 언어 | Python 3.13 |
| 제출기록 | 32412KB / 32ms |
| 최고기록 | 32ms |
| 해결날짜 | 2025/05/23 |
"""Solution code for "BOJ 33913. even 하게 익은 SCON".
- Problem link: https://www.acmicpc.net/problem/33913
- Solution link: http://www.teferi.net/ps/problems/boj/33913
Tags: [combinatorics]
"""
MOD = 10**9 + 7
def main():
N = int(input())
dp_even, dp_odd = 1, 0
for _ in range(1, N + 1):
dp_even, dp_odd = (
(24 * dp_even + 2 * dp_odd) % MOD,
(24 * dp_odd + 2 * dp_even) % MOD,
)
print(dp_even)
if __name__ == '__main__':
main()
"""Solution code for "BOJ 33913. even 하게 익은 SCON".
- Problem link: https://www.acmicpc.net/problem/33913
- Solution link: http://www.teferi.net/ps/problems/boj/33913
Tags: [combinatorics]
"""
from teflib import combinatorics
EVEN = 0
ODD = 1
MOD = 10**9 + 7
def main():
N = int(input())
coefs = {
EVEN: [(24, -1, EVEN), (2, -1, ODD)],
ODD: [(24, -1, ODD), (2, -1, EVEN)],
}
seeds = [[1, 0]]
answer = combinatorics.multivariable_linear_recurrence(coefs, seeds, N, MOD)
print(answer[EVEN])
if __name__ == '__main__':
main()
"""Solution code for "BOJ 33913. even 하게 익은 SCON".
- Problem link: https://www.acmicpc.net/problem/33913
- Solution link: http://www.teferi.net/ps/problems/boj/33913
Tags: [combinatorics]
"""
from teflib import combinatorics
MOD = 10**9 + 7
def main():
N = int(input())
comb_calc = combinatorics.CombCalculator(MOD)
pow_table_2 = [v := 1] + [v := (v * 2) % MOD for _ in range(1, N + 1)]
pow_table_24 = [v := 1] + [v := (v * 24) % MOD for _ in range(1, N + 1)]
answer = 0
for sc in range(0, N + 1, 2):
answer += (
comb_calc.comb(N, sc) * pow_table_2[sc] * pow_table_24[N - sc] % MOD
)
print(answer % MOD)
if __name__ == '__main__':
main()
"""Solution code for "BOJ 33913. even 하게 익은 SCON".
- Problem link: https://www.acmicpc.net/problem/33913
- Solution link: http://www.teferi.net/ps/problems/boj/33913
Tags: [math]
"""
MOD = 10**9 + 7
def main():
N = int(input())
answer = (pow(26, N, MOD) + pow(22, N, MOD)) * pow(2, -1, MOD) % MOD
print(answer)
if __name__ == '__main__':
main()