DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord連携を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Difference Pyramid

問題に戻る

解説

연산을 한 번 수행해도 모든 원소는 계속 0,1,20,1,20,1,2 중 하나이다. 따라서 마지막 값도 0,1,20,1,20,1,2 중 하나이다.

먼저 마지막 값의 홀짝을 구하자. 정수 x,yx,yx,y에 대해

∣x−y∣≡x+y(mod2)|x-y|\equiv x+y\pmod 2∣x−y∣≡x+y(mod2)

이다. 따라서 모든 값을 222로 나눈 나머지만 보면 한 단계의 연산은 인접한 두 값을 더하는 것과 같다.

이 연산을 N−1N-1N−1번 반복하면 파스칼의 삼각형과 같은 계수가 나타난다. 마지막 값의 홀짝 PPP는

P≡∑i=1N(N−1i−1)Ai(mod2)P\equiv\sum_{i=1}^{N}\binom{N-1}{i-1}A_i\pmod 2P≡i=1∑N​(

이다.

뤼카 정리에 의해

(nk)\binom{n}{k}(kn​)

가 홀수일 필요충분조건은 kkk의 모든 111비트가 nnn에도 존재하는 것이다. 즉,

(k&n)=k(k\mathbin{\&}n)=k(k&n)=k

이면 된다.

따라서 n=N−1n=N-1n=N−1이라 할 때, (i−1)&n=i−1(i-1)\mathbin{\&}n=i-1(i−1)&n=i−1을 만족하는 위치의 를 XOR하면 를 에 계산할 수 있다.

P=1P=1P=1이면 마지막 값은 홀수이고 가능한 값은 0,1,20,1,20,1,2뿐이므로 정답은 반드시 111이다.

이제 P=0P=0P=0인 경우를 생각하자. 마지막 값은 000 또는 222이다.

마지막 값이 222라면 처음 배열에는 111이 존재할 수 없다. 이를 배열 길이에 대한 귀납법으로 보일 수 있다. 길이가 111이면 자명하다. 길이가 222 이상이고 마지막 값이 222라 하자. 첫 연산 뒤의 배열에도 같은 문제를 적용할 수 있으므로 귀납 가정에 의해 첫 연산 뒤의 모든 값은 짝수이다. 따라서 원래 배열의 모든 인접한 두 값은 같은 홀짝을 가지며, 원래 배열의 모든 값의 홀짝이 같다. 모두 홀수라면 모든 값이 111이고 첫 연산 뒤부터 전부 0이 되어 마지막 값도 이다. 모순이다. 따라서 원래 배열의 모든 값은 또는 이다.

그러므로 P=0P=0P=0인데 Ai=1A_i=1Ai​=1인 위치가 하나라도 있다면 정답은 000이다.

마지막으로 모든 AiA_iAi​가 000 또는 222인 경우를 보자. Ci=Ai/2C_i=A_i/2Ci라 두면 는 또는 이다. 또한

∣2x−2y∣=2∣x−y∣|2x-2y|=2|x-y|∣2x−2y∣=2∣x−y∣

이므로 전체 Difference Pyramid의 모든 값이 정확히 222배로 대응한다. 따라서 원래 배열의 마지막 값은 CCC의 마지막 값의 222배이다.

CCC는 이진 배열이므로 마지막 값은 000 또는 111이고, 앞에서와 같은 이항계수 홀짝 계산으로 정확히 구할 수 있다. 즉,

Q≡∑i=1N(N−1i−1)Ai2(mod2)Q\equiv\sum_{i=1}^{N}\binom{N-1}{i-1}\frac{A_i}{2}\pmod2Q≡i=1∑N​(

를 구해 정답으로 2Q2Q2Q를 출력하면 된다.

전체 배열을 한 번 순회하면서 PPP, QQQ, 111의 존재 여부를 동시에 계산할 수 있으므로 시간 복잡도는 O(N)O(N)O(N)이고 메모리 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT5.6

i−1
N−1
​
)
Ai​
(mod2)
Ai mod 2A_i\bmod2
Ai​mod2
PPP
O(N)O(N)O(N)
0
0
000
000
222
​
=
Ai​/2
CiC_iCi​
000
111
i−1
N−1
​
)
2Ai​​
(mod2)