아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

이진 수열 0으로 만들기

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

요약
주어진 이진 수열을 정확히 K번 뒤집어 모두 0으로 만드는 순서 있는 선택 경우의 수를 셉니다.
난이도

보통10점 중 5점

유형
조합론, 동적 계획법
정답자
아직 제출이 없습니다

문제

아담은 문제 풀기를 좋아한다. 아담에게 0과 1로만 이루어진 길이 NN의 수열이 주어진다.

아담은 정확히 KK번 조작을 한다. 매 조작마다 수열의 원소를 하나 골라 그 원소를 뒤집는다. 뒤집으면 0은 1이 되고 1은 0이 된다. KK번을 모두 마쳤을 때 수열의 원소가 전부 0이어야 한다.

아담은 이 문제를 쉽게 풀지만, 방법이 몇 가지나 되는지 궁금해졌다. 조건을 만족하는 방법의 수를 109+710^9 + 7로 나눈 나머지를 구하라.

어떤 ii에 대해 ii번째 조작에서 고른 원소가 서로 다르면, 두 방법은 다른 방법으로 센다.

입력

첫째 줄에 테스트 케이스의 개수 TT (1≤T≤501 \le T \le 50)가 주어진다. 이어서 테스트 케이스가 TT개 주어진다.

각 테스트 케이스의 첫째 줄에는 수열의 길이 NN (1≤N≤10001 \le N \le 1000)과 조작 횟수 KK (1≤K≤10001 \le K \le 1000)가 공백으로 구분되어 주어진다. 다음 NN개 줄에는 수열의 원소가 한 줄에 하나씩, 수열의 순서대로 0 또는 1로 주어진다.

출력

각 테스트 케이스마다 한 줄에 Case #X: Y 형식으로 출력한다. XX는 1부터 시작하는 테스트 케이스 번호이고, YY는 조건을 만족하는 방법의 수를 109+710^9 + 7로 나눈 나머지다.

예제5

  1. 예제 1

    입력
    5
    1 10
    0
    1 11
    1
    1 10
    1
    2 30
    0
    0
    3 10
    0
    0
    0
    
    예상 출력
    Case #1: 1
    Case #2: 1
    Case #3: 0
    Case #4: 536870912
    Case #5: 14763
    
  2. 예제 2

    입력
    4
    1 1
    1
    1 1
    0
    2 2
    1
    1
    2 2
    0
    0
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 2
    Case #4: 2
    
  3. 예제 3

    입력
    3
    2 3
    1
    0
    3 5
    1
    1
    1
    4 4
    1
    0
    1
    0
    
    예상 출력
    Case #1: 4
    Case #2: 60
    Case #3: 32
    
  4. 예제 4

    입력
    3
    5 2
    1
    1
    1
    0
    0
    4 7
    0
    0
    0
    0
    6 1
    1
    1
    0
    0
    0
    0
    
    예상 출력
    Case #1: 0
    Case #2: 0
    Case #3: 0
    
  5. 예제 5

    입력
    4
    1 1000
    0
    1 999
    1
    1 999
    0
    1 1000
    1
    
    예상 출력
    Case #1: 1
    Case #2: 1
    Case #3: 0
    Case #4: 0