만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

추적

면접 대비

시간 제한2초메모리 제한1024 MB

요약
x의 숫자열을 k개의 수로 나누고, 이웃한 두 수의 차이가 l 이상 r 이하가 되는 나누는 방법의 수를 구합니다.
난이도

보통10점 중 4점

유형
완전 탐색, 백트래킹, 문자열
정답자
아직 제출이 없습니다

문제

케실리우스가 와툼바의 지팡이를 훔쳐 닥터 스트레인지가 여러 대체 현실을 쫓고 있다. 방금 닥터가 그를 놓쳤지만, 자신의 능력 덕분에 케실리우스가 지금 어디에 있는지는 여전히 알 수 있다.

스트레인지는 케실리우스가 들렀던 현실의 번호를 모두 적었는데, 번호를 빈틈없이 한 줄로 이어 적어 버렸다. 그래서 원래 번호를 정확히 복원할 수 없게 되었다.

다만 스티븐은 다음 세 가지 조건을 기억하고 있다.

  • 케실리우스는 정확히 kk개의 현실에 들렀다.
  • 각 현실의 번호는 0 이상의 정수이며, 앞에 0이 붙지 않는다(번호가 0인 현실은 예외다).
  • 번호가 xx인 현실에서 케실리우스는 항상 번호가 yy인 현실로 이동했다. 이때 xx와 yy의 차의 절댓값은 ll 이상이고 rr 이하이다.

이동 경로를 정확히 알 수는 없으므로, 닥터는 이어 적은 숫자를 위 조건을 만족하는 kk개의 수로 나누는 방법이 몇 가지인지 알고 싶어 한다.

입력

첫 줄에 테스트 케이스의 수 tt가 주어진다 (1≤t≤1001 \le t \le 100). 다음 tt개의 줄에는 각 테스트가 정수 네 개 xx, ll, rr, kk로 주어진다 (1≤x≤10181 \le x \le 10^{18}, 0≤l≤r≤10180 \le l \le r \le 10^{18}, 1≤k≤181 \le k \le 18). 여기서 xx는 스트레인지가 얻은 수이고, ll과 rr은 절댓값 차의 하한과 상한이며, kk는 케실리우스가 들른 현실의 수이다.

출력

각 테스트에 대해 조건을 만족하는 분할 방법의 수를 한 줄에 출력한다.

힌트

첫 번째 테스트에서는 절댓값 차 조건을 만족하는 분할이 하나뿐이다. 먼저 케실리우스는 번호 24인 현실에 있었고, 그다음 번호 8인 현실에 있었다. 두 번째 테스트에서는 가능한 분할이 두 가지이다: 2→482 \rightarrow 48, 24→824 \rightarrow 8.

예제1

  1. 예제 1

    입력
    3
    248 16 45 2
    248 16 46 2
    4444 1 5 2
    
    예상 출력
    1
    2
    0