목차

even 하게 익은 SCON

ps
링크acmicpc.net/…
출처BOJ
문제 번호33913
문제명even 하게 익은 SCON
레벨실버 1
분류

DP, 수학

시간복잡도O(logn)
인풋사이즈n<=1,000,000
사용한 언어Python 3.13
제출기록32412KB / 32ms
최고기록32ms
해결날짜2025/05/23

풀이

코드

코드 1 - O(n) DP

"""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()

코드 2 - O(logn) DP

"""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()

코드 3 - 조합론

"""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()

코드 4 - 일반항

"""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()