SCSC 문자열 놀이

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

요약
S 또는 C를 덧붙여 만든 문자열 중 점수가 정확히 N이고 SCSC를 연속 부분 문자열로 가지는 경우의 수를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 문자열 매칭, 수학
정답자
아직 제출이 없습니다

문제

빈 문자열에서 시작해서, 알파벳 대문자 S 또는 C를 맨 오른쪽 끝에 추가하는 시행을 원하는 횟수만큼 반복하는 놀이를 하려고 한다.

놀이의 점수는 다음 규칙과 같이 계산된다.

  • 처음에 빈 문자열만 있을 때의 점수는 00점이다.
  • 점수가 XX점인 상황에서, 문자열의 맨 오른쪽 끝에 S를 추가하면 점수가 2X+S2X+S점이 된다.
  • 점수가 XX점인 상황에서, 문자열의 맨 오른쪽 끝에 C를 추가하면 점수가 2X+C2X+C점이 된다.

시행을 원하는 횟수만큼 반복해서 만든 문자열이 SCSC를 연속된 부분 문자열로 가지면서 점수가 정확히 NN점이 되는 경우의 수를 구하는 프로그램을 작성해 보자!

문자열이 SCSC와 정확히 일치하는 경우도 센다. 또한, 시행 횟수가 동일하더라도 만들어진 문자열이 다르다면 다른 경우로 센다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤1000)(1 \leq T \leq 1 000)

둘째 줄부터 TT개의 줄에 걸쳐 정수 NN, SS, CC가 공백으로 구분되어 주어진다. (1≤N≤1012;(1 \leq N \leq {10}^{12}; 1≤S,C≤106)1 \leq S, C \leq {10}^6)

출력

각 테스트 케이스마다 한 줄에 하나씩, 시행을 원하는 횟수만큼 반복해서 만든 문자열이 SCSC를 연속된 부분 문자열로 가지면서 최종 점수가 NN점이 되도록 하는 경우의 수를 출력한다.

예제1

  1. 예제 1

    입력
    2
    73 1 3
    1 1 1
    
    예상 출력
    2
    0