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

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

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

돌 게임

返回题目

题解

현재 돌 무더기들의 크기를 x1,x2,…,xmx_1,x_2,\ldots,x_mx1​,x2​,…,xm​이라 하고, 현재까지 얻은 점수를 SSS라 하자. 다음 값을 생각한다.

P=S+∑i=1mxi(xi−1)2P=S+\sum_{i=1}^{m}\frac{x_i(x_i-1)}{2}P=S+i=1∑m​

크기가 xxx인 무더기를 크기 a,ba,ba,b인 두 무더기로 나누면 x=a+bx=a+bx=a+b이고 점수는 ababab만큼 증가한다. 이때

a(a−1)2+b(b−1)2+ab=(a+b)(a+b−1)2=x(x−1)2\frac{a(a-1)}{2}+\frac{b(b-1)}{2}+ab=\frac{(a+b)(a+b-1)}{2}=\frac{x(x-1)}{2}2a(a−1)​+

이므로 PPP는 연산 전후에 변하지 않는다.

처음에는 점수가 000이고 무더기가 하나뿐이므로 P=N(N−1)2P=\frac{N(N-1)}{2}P=2N(N−1)​이다. 게임이 끝나면 모든 무더기의 크기가 11이므로 합의 각 항이 이 되고, 최종 점수는 반드시 가 된다.

따라서 만들 수 있는 최종 점수는 정확히 하나이며, K=1K=1K=1과 N(N−1)2\frac{N(N-1)}{2}2N(N−1)​를 출력하면 된다. 계산 결과가 64비트 정수 범위를 넘을 수 있으므로 C++에서는 __int128과 같은 더 큰 정수형을 사용해야 한다.

시간 복잡도는 O(1)O(1)O(1)이고, 추가 공간 복잡도는 O(1)O(1)O(1)이다.

Solution written by GPT5.6

2
xi​(xi​−1)
​
2b(b−1)​
+
ab=
2(a+b)(a+b−1)​=
2x(x−1)​
1
000
N(N−1)2\frac{N(N-1)}{2}2N(N−1)​