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

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

인접한 룩

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

요약
n x n 체스판에 같은 행이나 열을 공유하지 않도록 룩 n개를 놓을 때, 대각선으로 인접한 쌍이 정확히 k개인 배치의 수를 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

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

문제

오크 교수는 학생들을 위해 문제를 하나 준비하고 있다. 문제는 n×nn \times n 체스판에 nn개의 룩을 서로 위협하지 않도록, 즉 어떤 두 룩도 같은 열이나 같은 행에 놓이지 않도록 배치하는 방법의 수를 세는 것이다.

그런데 이 문제는 너무 쉬워서, 오크 교수는 조건을 하나 더 붙이기로 했다. 두 룩이 대각선으로 인접해 있는, 즉 열도 이웃하고 행도 이웃한 룩 쌍이 정확히 kk개인 배치의 수만 세고 싶다. 이 문제를 풀 수 있겠는가?

답은 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫째 줄에 테스트 케이스의 수 tt가 주어진다 (1≤t≤50001 \leq t \leq 5000).

각 테스트 케이스는 한 줄에 두 정수 nn과 kk로 주어진다 (1≤n≤10001 \leq n \leq 1000; 0≤k≤n−10 \leq k \leq n-1). nn은 룩의 개수이고, kk는 대각선으로 인접해야 하는 룩 쌍의 개수이다.

출력

어떤 두 룩도 같은 행이나 같은 열에 있지 않으면서 대각선으로 인접한 룩 쌍이 정확히 kk개가 되도록 nn개의 룩을 놓는 방법의 수를 하나의 정수로 출력한다. 답은 109+710^9 + 7로 나눈 나머지로 나타내야 한다.

예제1

  1. 예제 1

    입력
    5
    1 0
    2 0
    3 1
    3 2
    4 2
    
    예상 출력
    1
    0
    4
    2
    10