DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 账号绑定的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

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)