만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

숫자 게임

시간 제한2초메모리 제한1024 MB

요약
서로 다른 정수 n개가 주어질 때, 탁자 위 칩들이 공차 2 이상의 등차수열에 모두 속하도록 번갈아 칩을 놓는 게임에서 페티야가 이기는 첫 수를 모두 구합니다.
난이도

보통10점 중 7점

유형
게임 이론, 정수론, 비트 연산
정답자
아직 제출이 없습니다

문제

공차가 dd인 등차수열은 수열 a1,a2,…,aka_1, a_2, \ldots, a_k에서 이웃한 두 수의 차가 모두 dd인 수열이다. 예를 들어 2, 5, 8, 11은 공차가 3인 등차수열이다. 페탸와 바샤는 칩 nn개가 든 바구니로 게임을 한다. 각 칩에는 서로 다른 정수가 적혀 있으며, 그 수는 a1,a2,…,ana_1, a_2, \ldots, a_n이다. 두 사람은 번갈아 두고, 페탸가 먼저 둔다. 한 차례에 플레이어는 바구니에서 칩 하나를 골라 탁자에 올린다. 그다음 탁자에 놓인 모든 칩의 수가 공차 dd인 어떤 등차수열의 항이 되도록 정수 d≥2d \ge 2를 불러야 한다. 항들이 연속일 필요는 없다. 예를 들어 탁자에 2, 8, 11이 있으면 d=3d = 3을 부를 수 있다. 둘 수 없는 플레이어가 진다. 바구니가 비었거나, 바구니에 남은 어떤 칩을 올려도 맞는 dd가 없으면 둘 수 없다. 예를 들어 바구니에 2, 3, 5, 7이 있으면 페탸는 첫 수로 3을 놓아 이길 수 있다. 프로그램은 nn과 a1,…,ana_1, \ldots, a_n이 주어졌을 때, 바샤가 어떻게 두든 페탸가 이길 수 있는지 판단하고, 페탸를 이기게 하는 모든 첫 수를 구해야 한다.

입력

첫 줄에 정수 nn (1≤n≤2001 \le n \le 200)이 주어진다. 둘째 줄에는 서로 다른 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤1051 \le a_i \le 10^5)이 주어진다. 이웃한 수는 공백 하나로 구분된다.

출력

첫 줄에는 페탸가 이길 수 있는 첫 수의 개수 kk를 출력한다. 바샤가 페탸의 행동과 관계없이 이길 수 있으면 0만 출력한다. 그렇지 않으면 둘째 줄에 이기는 수 kk개를 공백 하나로 구분해 출력한다.

힌트

바구니에 2와 4만 있으면, 페탸가 어느 칩을 놓든 바샤가 나머지 칩을 놓는다. 그러면 페탸는 둘 칩이 없어 진다. 앞서 든 첫 번째 경우는 본문에서 자세히 설명했다.

예제2

  1. 예제 1

    입력
    4
    2 3 5 7
    
    예상 출력
    1
    3
    
  2. 예제 2

    입력
    2
    2 4
    
    예상 출력
    0