| ps | |
|---|---|
| 링크 | acmicpc.net/… |
| 출처 | BOJ |
| 문제 번호 | 10422 |
| 문제명 | 괄호 |
| 레벨 | 골드 4 |
| 분류 |
수학, 카탈랑 수 |
| 시간복잡도 | O(n+T) |
| 인풋사이즈 | n<=5000, T<=100 |
| 사용한 언어 | Python |
| 제출기록 | 31508KB / 100ms |
| 최고기록 | 60ms |
| 해결날짜 | 2020/11/16 |
"""Solution code for "BOJ 10422. 괄호".
- Problem link: https://www.acmicpc.net/problem/10422
- Solution link: http://www.teferi.net/ps/problems/boj/10422
"""
MOD = 1_000_000_007
MAX_SIZE = 25000
def main():
inv = [0, 1]
for i in range(2, MAX_SIZE + 3):
inv.append(-(MOD // i) * inv[MOD % i])
catalan_nums = [1]
for i in range(MAX_SIZE):
catalan_nums.append(2 * (2 * i + 1) * inv[i + 2] * catalan_nums[i] %
MOD)
T = int(input())
for _ in range(T):
L = int(input())
print(0 if L % 2 else catalan_nums[L // 2])
if __name__ == '__main__':
main()