중복 이진 표기법
시간 제한1초메모리 제한1024 MB
N을 2의 거듭제곱 자리로 나타낼 때 각 자리 숫자를 0부터 t까지 허용하고 앞자리에 0이 오지 않게 하는 표현의 수를 998244353으로 나눈 나머지로 구한다.
문제

이항 힙의 이항 트리. Wikimedia, cc-by-sa
중복 이진 표기법은 이진 표기법과 비슷하지만, 각 자리에 과 만 허용하는 대신 범위의 정수를 허용한다. 여기서 는 주어진 상한이다. 예를 들어 이면 숫자 를 쓸 수 있으므로 십진수 를 , , 로 나타낼 수 있다. 이면 모든 수의 표현이 하나뿐이며, 그 표현은 일반적인 이진 표현이다. 일반적으로 어떤 수를 중복 이진 표기법으로 라고 쓰면 이에 대응하는 십진수는 이다.
중복 이진 표기법은 자리올림 없는 연산을 가능하게 하므로 하드웨어 설계와 최악 시간 복잡도 자료 구조 설계에 쓰인다. 예를 들어 표준 이항 힙에 원소를 삽입하는 연산은 최악 시간 이지만 분할 상환 시간은 이다. 힙에 들어 있는 원소의 총 개수를 나타내는 이진수를 증가시키는 데 최악 시간 , 분할 상환 시간 이 걸리기 때문이다. 이항 힙의 개별 이항 트리를 중복 이진 표현으로 나타내면 이항 힙의 삽입 최악 시간을 로 줄일 수 있다.
하지만 이 문제를 푸는 데 그런 정보는 필요 없다. 이 문제에서 할 일은 간단하다. 십진수 과 자릿수 상한 가 주어질 때, 각 자리가 범위에 있고 앞에 불필요한 0이 없는 중복 이진 표기법으로 을 나타내는 방법의 수를 세면 된다.
입력
입력은 한 줄로 이루어지며, 두 십진 정수 ()과 ()가 주어진다.
출력
각 자리가 범위에 있고 앞에 불필요한 0이 없는 중복 이진 표기법으로 십진수 을 나타내는 방법의 수를 십진수로 출력한다. 방법의 수가 매우 클 수 있으므로 답을 큰 소수 으로 나눈 나머지를 출력한다.