[http://online-judge.uva.es/p/v102/10276.html 원문보기]
----
인기도:B(A,B,C), 성공률:높음(낮음,보통,높음), 레벨:3(1~4)
=== About [HanoiTowerTroublesAgain!] ===
하노이의 탑 문제를 변형시킨 문제들 중에도 흥미로운 문제들이 많이 있다. 이 문제는 N개의 기둥과 1부터 무한대까지의 정수가 적혀있는 공에 관한 문제다. 두 공에 적힌 번호의 합이 완전제곱수(어떤 정수를 제곱한 수)가 아니면 그 두 공 사이에는 서로 맞닿아있을 수 없을 만큼 큰 척력이 작용하게 된다.
[http://online-judge.uva.es/p/v102/p10276.jpg]
공을 한 번에 하나씩, 번호가 커지는 순서로 기둥에 끼우는 게임을 한다(즉 1번을 끼우고 나서 2번을 끼우고, 그리고 나서 3번을 끼우고 하는 식으로 공을 기둥에 끼움). 더 이상 서로 밀어내지 않도록 공을 끼울 수 없게 되면 게임이 끝난다. 게임의 목표는 최대한 많은 개수의 공을 끼우는 것이다. 위에 있는 그림에는 기둥이 네 개인 경우에 최대한 많은 공을 끼운 결과가 나와 있다.
=== Input ===
첫번째 줄에는 테스트 케이스의 개수를 나타내는 정수 T(1≤T≤50)가 입력된다. 각 테스트 케이스마다 쓸 수 있는 기둥의 개수를 나타내는 정수 N(1≤N≤50)이 입력된다.
=== Output ===
각 테스트 케이스에 대해 기둥에 끼울 수 있는 공의 최대 개수를 나타내는 정수를 출력한다. 끼울수 있는 공의 개수가 무한대면 '-1'을 출력한다.
=== Sample Input ===
{{| 2
4
25 |}}
=== Sample Output ===
{{| 11
337 |}}
=== 풀이 ===
|| 작성자 || 사용언어 || 개발시간 || 코드 ||
|| 문보창 || C++ || 10분 || [HanoiTowerTroublesAgain!/문보창] ||
|| 황재선 || Java || 50분 || [HanoiTowerTroublesAgain!/황재선] ||
|| 하기웅 || C++ || 원랜 1시간, 문보창 XXX 때문에 말렸음ㅡㅡ; || [HanoiTowerTroublesAgain!/하기웅] ||
|| 이도현 || C++ || Closed Form 구하는 데(1시간 30분), 코딩 5분 || [HanoiTowerTroublesAgain!/이도현] ||
|| [조현태] || C++ || ? || [HanoiTowerTroublesAgain!/조현태] ||
=== 쓰레드 ===
----
[문제분류] [경시대회준비반]