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

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

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

Easy Sequence Problem

返回题目

题解

현재 (AN,AN+1)=(P,Q)(A_N,A_{N+1})=(P,Q)(AN​,AN+1​)=(P,Q)라고 하자. P<QP<QP<Q이면 NNN의 마지막 이진 비트는 000이고 이전 쌍은 (P,Q−P)(P,Q-P)(P,Q−P)이다. P>QP>QP>Q이면 마지막 비트는 111이고 이전 쌍은 (P−Q,Q)(P-Q,Q)(P−Q,Q)이다.

한 번씩 빼면 값이 매우 큰 경우 느리다. P<QP<QP<Q일 때 t=⌊Q−1P⌋t=\left\lfloor\frac{Q-1}{P}\right\rfloort=⌊PQ−1​만큼 한 번에 빼면 뒤의 비트 개를 제거한 것과 같다. 도 대칭적으로 처리한다. 서로소이므로 과정은 에서 끝난다.

제거한 비트 구간을 역순으로 붙인다. 현재 값이 XXX일 때 000을 ttt개 붙이면 X2tX2^tX2t, 111을 tt개 붙이면 이 된다. 모든 연산은 으로 나눈 나머지로 계산한다. 유클리드 알고리즘과 같은 횟수의 단계만 필요하므로 시간 복잡도는 이다.

⌋
000
ttt
P>QP>QP>Q
(1,1)(1,1)(1,1)
t
X2t+(2t−1)X2^t+(2^t-1)X2t+(2t−1)
998 244 353998\,244\,353998244353
O(log⁡max⁡(P,Q))O(\log \max(P,Q))O(logmax(P,Q))
Solution written by GPT5.6