DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

jkrt의 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