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

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

체스판 위의 킹

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

요약
x행 y열 보드에 서로 공격하지 않게 k개의 킹을 놓는 경우의 수를 1,000,000,007로 나눈 나머지를 구합니다.
난이도

보통10점 중 7점

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

문제

xx행 yy열짜리 체스판과 서로 구분되지 않는 킹 kk개가 있다. 킹 kk개를 모두 체스판에 올려놓되, 어떤 두 킹도 서로를 공격하지 못하도록 놓아야 한다. 두 킹은 가로, 세로, 대각선 중 어느 방향으로든 맞닿은 칸에 있으면 서로를 공격한다. 한 칸에는 킹을 최대 하나만 놓을 수 있다.

킹 kk개를 놓는 방법의 수를 구하는 프로그램을 작성하시오. 그 수가 매우 커질 수 있으므로 1,000,000,007로 나눈 나머지를 구한다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 이어지는 TT개의 줄에는 각각 세 정수 xx, yy, kk가 공백 하나를 사이에 두고 주어진다.

  • 0<T≤500 < T \le 50
  • 2≤x,y≤152 \le x, y \le 15
  • 1≤k≤x×y1 \le k \le x \times y

출력

각 테스트 케이스마다 킹 kk개를 놓는 방법의 수를 1,000,000,007로 나눈 나머지를 입력 순서대로 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    4
    8 8 1
    7 7 16
    7 7 7
    3 7 15
    
    예상 출력
    64
    1
    2484382
    0
    
  2. 예제 2

    입력
    6
    2 2 1
    2 2 2
    2 2 3
    2 2 4
    2 3 2
    3 3 4
    
    예상 출력
    4
    0
    0
    0
    4
    1
    
  3. 예제 3

    입력
    4
    2 2 1
    15 15 1
    7 11 1
    3 14 1
    
    예상 출력
    4
    225
    77
    42
    
  4. 예제 4

    입력
    5
    5 5 5
    6 6 9
    4 7 6
    8 8 16
    10 10 20
    
    예상 출력
    1974
    3600
    3698
    281571
    675251192