조명

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

요약
표준 정수 덧셈으로 a+b를 계산했을 때 1 비트가 정확히 K개인 N비트 b의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 비트 연산, 수학
정답자
아직 제출이 없습니다

문제

바이너리 카지노의 조명 시스템은 중앙 제어 콘솔에 연결된 매우 복잡하고 안전한 장치로 제어된다. 콘솔에서는 각 조명의 상태가 1비트의 정보로 저장된다(0은 해당 조명이 꺼져 있음, 1은 켜져 있음). 따라서 건물에 있는 모든 조명의 전체 상태는 이진수 a로 나타낼 수 있다.

권한이 없는 사람이 조작하는 것을 막기 위해 조명 시스템에는 조명을 제어하는 특별한 방법이 있다. 조명의 구성을 바꾸려면 이진수 b를 입력해야 하며, 이 수는 표준 정수 덧셈으로 원래 구성 a에 더해진다.

여러분은 특정 개수의 조명이 켜져 있기를 원하며, 성공할 가능성이 얼마나 되는지 궁금하다. 조건에 맞는 이진수는 모두 몇 개인가?

입력

첫 번째 줄에는 두 정수 N과 K가 주어진다(1 ≤ N ≤ 1000, 0 ≤ K ≤ N). N은 a와 b의 비트 수이고, K는 켜져 있어야 하는 조명의 개수이다. 두 번째 줄에는 길이가 N인 이진 정수 a가 주어진다.

출력

합 a + b에서 1로 설정된 비트가 정확히 K개인 서로 다른 음이 아닌 N비트 정수 b의 개수를 출력한다. 결과가 클 수 있으므로 109 + 7로 나눈 나머지를 출력한다.

예제3

  1. 예제 1

    입력
    4 2
    1100
    
    예상 출력
    5
    
  2. 예제 2

    입력
    10 5
    1000100111
    
    예상 출력
    260
    
  3. 예제 3

    입력
    13 1
    0000000000000
    
    예상 출력
    13