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

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

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

Pi Problem

問題に戻る

解説

P=998 244 353P=998\,244\,353P=998244353이라 하자. aaa의 자릿수가 ddd이면 rep(a,b)\mathrm{rep}(a,b)rep(a,b)는 다음과 같다.

rep(a,b)=a∑k=0b−110dk=a10db−110d−1.\mathrm{rep}(a,b)=a\sum_{k=0}^{b-1}10^{dk}=a\frac{10^{db}-1}{10^d-1}.rep(a,b)=ak=0∑

1≤d≤101\leq d\leq101≤d≤10에서 10d−110^d-110d−1은 PPP의 배수가 아니므로 모듈러 역원으로 나눗셈을 계산할 수 있다. G를 위 식의 등비급수 부분을 로 나눈 나머지라고 하자.

AiA_iAi​의 자릿수를 did_idi​라 하자. 인덱스 iii가 왼쪽 끝인 모든 쌍의 곱은 다음과 같다.

AiN−i∏j=i+1NGdi(Aj)A_i^{N-i}\prod_{j=i+1}^{N}G_{d_i}(A_j)AiN−i​j=i+1∏

따라서 오른쪽에서 왼쪽으로 순회하면서 자릿수 ddd별 접미 곱 Sd=∏j>iGd(Aj)S_d=\prod_{j>i}G_d(A_j)Sd​=∏j>i​를 유지한다. 먼저 정답에 를 곱하고, 그다음 모든 에 를 곱한다. 이 순서여야 가 포함되지 않는다.

10d−110^d-110d−1의 역원은 미리 구한다. Gd(Ai)G_d(A_i)Gd​(Ai​를 계산할 때는 를 한 번 구한 뒤 을 차례로 곱해 사용한다. 한 케이스의 시간 복잡도는 , 공간 복잡도는 이다.

증명

각 iii를 처리하기 직전에 SdS_dSd​는 정확히 j>ij>ij>i인 원소들의 Gd(Aj)G_d(A_j)를 모두 곱한 값이다. 처음에는 오른쪽 원소가 없으므로 모든 이다. 의 기여분을 정답에 곱한 뒤 를 에 곱하면 다음 인덱스에 대해서도 불변식이 유지된다.

서브태스크 1에서는 수를 직접 이어 붙여도 된다. 서브태스크 2에서는 모든 쌍을 순회하며 등비급수 식으로 계산한다. 서브태스크 3에서는 자릿수가 항상 111이므로 접미 곱 하나만 관리한다. 전체 조건에서는 자릿수 111부터 101010까지 각각 접미 곱을 관리한다.

Solution written by GPT5

b
−
1
​
1
0dk
=
a10d−110db−1​.
d(b)G_d(b)
Gd​(b)
PPP
N
​
Gdi​​
(
Aj​
)
G
d​
(
Aj​
)
AiN−iSdiA_i^{N-i}S_{d_i}AiN−i​Sdi​​
SdS_dSd​
Gd(Ai)G_d(A_i)Gd​(Ai​)
(i,i)(i,i)(i,i)
)
x=10Ai mod Px=10^{A_i}\bmod Px=10Ai​modP
x1,x2,⋯ ,x10x^1,x^2,\cdots,x^{10}x1,x2,⋯,x10
O(N(10+log⁡N+log⁡max⁡Ai))O(N(10+\log N+\log\max A_i))O(N(10+logN+logmaxAi​))
O(N)O(N)O(N)
Gd​(Aj​)
Sd=1S_d=1Sd​=1
iii
Gd(Ai)G_d(A_i)Gd​(Ai​)
SdS_dSd​

각 쌍 (i,j)(i,j)(i,j)는 왼쪽 끝 iii를 처리할 때 AiA_iAi​ 한 번과 Gdi(Aj)G_{d_i}(A_j)Gdi​​(Aj​) 한 번으로 포함된다. 다른 단계에서는 포함되지 않는다. 따라서 마지막 값이 요구한 모든 쌍의 곱이다.