만드는 중입니다

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

빙고

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

요약
일부가 칠해진 n×n 빙고판과 앞으로 호출될 k개의 수가 주어질 때, 완성되는 줄 수의 기댓값에 (n²)!을 곱한 값을 10⁹+7로 나눈 나머지를 구합니다.
난이도

보통10점 중 5점

유형
수학, 조합론, 확률, 구현
정답자
아직 제출이 없습니다

문제

확률과 통계 수강생들이 빙고를 하고 있다. 이들의 빙고 게임은 다음 규칙으로 진행된다.

  • 참가자들은 각자 n×nn \times n 정사각형 보드의 각 칸에 11부터 n2n^2까지의 정수를 겹치지 않게 하나씩 적어 넣는다.
  • 매 라운드에 사회자는 11부터 n2n^2까지의 정수 중 하나를 부른다. 이미 부른 수는 고를 수 없다.
  • 참가자는 자신의 보드에서 사회자가 부른 수가 있는 칸을 찾아 색을 채운다.
  • 사회자가 더 이상 수를 부르지 않기로 하면 게임이 끝나고 점수를 계산한다. 각 참가자의 점수는 색이 채워진 칸으로만 이루어진 줄의 수이다. 고려하는 줄은 가로 nn줄, 세로 nn줄, 대각선 22줄로 총 2n+22n+2개이다.

위 빙고판의 점수는 55점이다.

사회자는 매우 공정해서, 매 차례 부를 수 있는 수를 같은 확률로 골라 부른다.

현재까지 진행된 게임 상황을 반영한 참가자 AA의 빙고판이 주어진다. 사회자가 정확히 kk개의 수를 추가로 부를 예정일 때, AA가 받을 최종 점수의 기댓값을 구하라.

입력

첫 번째 줄에 두 정수 nn, kk가 주어진다. (1≤n≤100(1 \le n \le 100, 0≤k≤n2)0 \le k \le n^2)

두 번째 줄부터 nn개의 줄에 걸쳐 빙고판의 상태가 00과 11로 이루어진 길이 nn의 문자열로 주어진다. 00은 칸에 색이 채워지지 않았음을, 11은 색이 채워져 있음을 뜻한다.

입력된 빙고판에는 채워지지 않은 칸이 적어도 kk개 있음이 보장된다.

출력

AA가 얻는 최종 점수의 기댓값을 XX라고 할 때, 첫째 줄에 (n2)!×X(n^2)! \times X를 소수 109+710^9+7로 나눈 나머지를 출력한다.

주어진 입력 범위에서 (n2)!×X(n^2)! \times X가 정수가 된다는 사실을 증명할 수 있다.

예제5

  1. 예제 1

    입력
    2 2
    00
    00
    
    예상 출력
    24
    
  2. 예제 2

    입력
    2 0
    10
    11
    
    예상 출력
    72
    
  3. 예제 3

    입력
    5 24
    00000
    00000
    00000
    00000
    00000
    
    예상 출력
    831030901
    
  4. 예제 4

    입력
    5 4
    00000
    00000
    00100
    00000
    00000
    
    예상 출력
    182548743
    
  5. 예제 5

    입력
    6 17
    000010
    000100
    001000
    010000
    100000
    000001
    
    예상 출력
    389132331