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

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

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

jkrt's AND

問題に戻る

解説

먼저 조건을 만족하는 양의 정수의 형태를 찾자.

한 자리 양의 정수 1,2,…,91,2,\ldots,91,2,…,9는 모두 조건을 만족한다. 실제로 xxx와 x−1x-1x−1은 서로 다른 한 자리 수이거나, x=1x=1x=1일 때 000이므로 공통 부분수열의 길이가 000이다.

이제 xxx가 두 자리 이상의 수라고 하자. 만약 xxx의 마지막 자리가 000이 아니라면, x−1x-1x−1은 xxx의 마지막 자리만 111 감소시킨 수이다. 따라서 마지막 자리를 제외한 앞부분이 그대로 남아 있고, 이 앞부분은 비어 있지 않다. 그러므로 와 은 공통 숫자를 가지며, LCS 길이가 일 수 없다.

따라서 두 자리 이상의 조건을 만족하는 xxx는 반드시 000으로 끝난다. xxx의 뒤쪽에 붙은 000의 개수를 최대한 많이 떼어

x=y⋅10t(t≥1)x = y \cdot 10^t \quad (t \ge 1)x=y⋅10t(t≥1)

라고 쓰자. 이때 yyy는 000으로 끝나지 않는다.

만약 yyy가 두 자리 이상의 수라면, y−1y-1y−1은 yyy의 마지막 자리만 111 감소시킨 수이므로 앞부분이 그대로 남는다. 따라서 xxx와 x−1x-1 역시 공통 숫자를 가지게 된다. 그러므로 는 한 자리 수여야 한다.

즉 두 자리 이상의 가능한 수는

x=d⋅10tx = d \cdot 10^tx=d⋅10t

꼴이어야 한다. 여기서 1≤d≤91 \le d \le 91≤d≤9, t≥1t \ge 1t≥1이다.

d=9d=9d=9이면 xxx의 십진 표기에 999가 들어 있고, x−1x-1x−1의 뒤쪽에는 999들이 생기므로 공통 숫자 가 존재한다. 따라서 는 불가능하다. 반대로 이면 의 숫자는 와 뿐이고, 의 숫자는 과 뿐이다. 이 둘은 공통 숫자를 갖지 않으므로 조건을 만족한다.

따라서 조건을 만족하는 수들은 다음 순서로 나열된다.

1,2,…,9,10,20,…,80,100,200,…,800,1000,2000,…1,2,\ldots,9,\quad 10,20,\ldots,80,\quad 100,200,\ldots,800,\quad 1000,2000,\ldots1,2,…,9,10,20,…,80,100,200,…,

그러므로 N≤9N \le 9N≤9이면 답은 NNN이다.

N≥10N \ge 10N≥10이면 ANA_NAN​은 다음과 같이 표현된다.

AN=d⋅10eA_N = d \cdot 10^eAN​=d⋅10e

여기서

d=((N−10) mod 8)+1d = ((N-10) \bmod 8) + 1d=((N−10)mod8)+1

이고,

e=⌊N−108⌋+1=⌊N−28⌋e = \left\lfloor \frac{N-10}{8} \right\rfloor + 1 = \left\lfloor \frac{N-2}{8} \right\rfloore=⌊8N−10​⌋+1=

이다.

NNN이 매우 클 수 있으므로 십진 문자열로 처리한다. ddd를 구하기 위해 N mod 8N \bmod 8Nmod8만 계산하면 된다. eee는 N−2N-2N를 문자열에서 계산한 뒤, 이를 로 나누면서 몫을 로 나눈 나머지로 구한다.

마지막으로 페르마의 소정리에 의해

10998244352≡1(mod998244353)10^{998244352} \equiv 1 \pmod {998244353}10998244352≡1(mod998244353)

이므로, 10e(mod998244353)10^e \pmod {998244353}10e(mod998244353)을 계산할 때 지수 eee는 998244352998244352998244352로 나눈 나머지만 알면 충분하다.

시간 복잡도는 O(∣N∣+log⁡998244353)O(|N|+\log 998244353)O(∣N∣+log998244353)이고, 메모리 사용량은 O(∣N∣)O(|N|)O(∣N∣)이다.

xxx
x−1x-1x−1
000
x−
1
yyy
99
9
d=9d=9d=9
1≤d≤81 \le d \le 81≤d≤8
xxx
ddd
000
x−1x-1x−1
d−1d-1d−1
999
800
,
1000
,
2000
,
…
⌊8N−2​⌋
−
2
888
998244352998244352998244352