먼저 조건을 만족하는 양의 정수의 형태를 찾자.
한 자리 양의 정수 1,2,…,9는 모두 조건을 만족한다. 실제로 x와 x−1은 서로 다른 한 자리 수이거나, x=1일 때 0이므로 공통 부분수열의 길이가 0이다.
이제 x가 두 자리 이상의 수라고 하자. 만약 x의 마지막 자리가 0이 아니라면, x−1은 x의 마지막 자리만 1 감소시킨 수이다. 따라서 마지막 자리를 제외한 앞부분이 그대로 남아 있고, 이 앞부분은 비어 있지 않다. 그러므로 x와 x−1은 공통 숫자를 가지며, LCS 길이가 0일 수 없다.
따라서 두 자리 이상의 조건을 만족하는 x는 반드시 0으로 끝난다. x의 뒤쪽에 붙은 0의 개수를 최대한 많이 떼어
x=y⋅10t(t≥1)
라고 쓰자. 이때 y는 0으로 끝나지 않는다.
만약 y가 두 자리 이상의 수라면, y−1은 y의 마지막 자리만 1 감소시킨 수이므로 앞부분이 그대로 남는다. 따라서 x와 x−1 역시 공통 숫자를 가지게 된다. 그러므로 y는 한 자리 수여야 한다.
즉 두 자리 이상의 가능한 수는
x=d⋅10t
꼴이어야 한다. 여기서 1≤d≤9, t≥1이다.
d=9이면 x의 십진 표기에 9가 들어 있고, x−1의 뒤쪽에는 9들이 생기므로 공통 숫자 9가 존재한다. 따라서 d=9는 불가능하다. 반대로 1≤d≤8이면 x의 숫자는 d와 0뿐이고, x−1의 숫자는 d−1과 9뿐이다. 이 둘은 공통 숫자를 갖지 않으므로 조건을 만족한다.
따라서 조건을 만족하는 수들은 다음 순서로 나열된다.
1,2,…,9,10,20,…,80,100,200,…,800,1000,2000,…
그러므로 N≤9이면 답은 N이다.
N≥10이면 AN은 다음과 같이 표현된다.
AN=d⋅10e
여기서
d=((N−10)mod8)+1
이고,
e=⌊8N−10⌋+1=⌊8N−2⌋
이다.
N이 매우 클 수 있으므로 십진 문자열로 처리한다. d를 구하기 위해 Nmod8만 계산하면 된다. e는 N−2를 문자열에서 계산한 뒤, 이를 8로 나누면서 몫을 998244352로 나눈 나머지로 구한다.
마지막으로 페르마의 소정리에 의해
10998244352≡1(mod998244353)
이므로, 10e(mod998244353)을 계산할 때 지수 e는 998244352로 나눈 나머지만 알면 충분하다.
시간 복잡도는 O(∣N∣+log998244353)이고, 메모리 사용량은 O(∣N∣)이다.