解説
연산을 한 번 수행해도 모든 원소는 계속 중 하나이다. 따라서 마지막 값도 중 하나이다.
먼저 마지막 값의 홀짝을 구하자. 정수 에 대해
이다. 따라서 모든 값을 로 나눈 나머지만 보면 한 단계의 연산은 인접한 두 값을 더하는 것과 같다.
이 연산을 번 반복하면 파스칼의 삼각형과 같은 계수가 나타난다. 마지막 값의 홀짝 는
이다.
뤼카 정리에 의해
가 홀수일 필요충분조건은 의 모든 비트가 에도 존재하는 것이다. 즉,
이면 된다.
따라서 이라 할 때, 을 만족하는 위치의 를 XOR하면 를 에 계산할 수 있다.
이면 마지막 값은 홀수이고 가능한 값은 뿐이므로 정답은 반드시 이다.
이제 인 경우를 생각하자. 마지막 값은 또는 이다.
마지막 값이 라면 처음 배열에는 이 존재할 수 없다. 이를 배열 길이에 대한 귀납법으로 보일 수 있다. 길이가 이면 자명하다. 길이가 이상이고 마지막 값이 라 하자. 첫 연산 뒤의 배열에도 같은 문제를 적용할 수 있으므로 귀납 가정에 의해 첫 연산 뒤의 모든 값은 짝수이다. 따라서 원래 배열의 모든 인접한 두 값은 같은 홀짝을 가지며, 원래 배열의 모든 값의 홀짝이 같다. 모두 홀수라면 모든 값이 이고 첫 연산 뒤부터 전부 이 되어 마지막 값도 이다. 모순이다. 따라서 원래 배열의 모든 값은 또는 이다.
그러므로 인데 인 위치가 하나라도 있다면 정답은 이다.
마지막으로 모든 가 또는 인 경우를 보자. 라 두면 는 또는 이다. 또한
이므로 전체 Difference Pyramid의 모든 값이 정확히 배로 대응한다. 따라서 원래 배열의 마지막 값은 의 마지막 값의 배이다.
는 이진 배열이므로 마지막 값은 또는 이고, 앞에서와 같은 이항계수 홀짝 계산으로 정확히 구할 수 있다. 즉,
를 구해 정답으로 를 출력하면 된다.
전체 배열을 한 번 순회하면서 , , 의 존재 여부를 동시에 계산할 수 있으므로 시간 복잡도는 이고 메모리 복잡도는 이다.
Solution written by GPT5.6