백준
백준 10448 유레카 이론 (파이썬)
chldkato
2020. 6. 5. 19:30
https://www.acmicpc.net/problem/10448
10448번: 유레카 이론
문제 삼각수 Tn(n ≥ 1)는 [그림]에서와 같이 기하학적으로 일정한 모양의 규칙을 갖는 점들의 모음으로 표현될 수 있다. [그림] 자연수 n에 대해 n ≥ 1의 삼각수Tn는 명백한 공식이 있다. Tn = 1 + 2 +
www.acmicpc.net
1. 삼각수를 미리 다 구하여 a에 저장한다
2. 중복조합으로 삼각수 3개를 정하고 입력받은 n과 일치하는지 확인한다
3. 일치하면 1을 리턴하고 출력한다. 모든 경우를 고려해도 일치하지 않으면 0을 출력한다
import sys
input = sys.stdin.readline
def f(cnt):
if cnt == 3:
res = 0
for i in range(len(a)):
if select[i] > 0:
res += a[i] * select[i]
if res == n:
return 1
else:
return 0
for i in range(len(a)):
select[i] += 1
if f(cnt+1) == 1:
return 1
select[i] -= 1
a, i = [], 0
while True:
i += 1
ni = i * (i+1) // 2
if ni >= 1000:
break
a.append(ni)
tc = int(input())
for _ in range(tc):
n = int(input())
select = [0 for _ in range(len(a))]
if f(0) == 1:
print(1)
else:
print(0)