trang chủ / đề bài / icpc21_mn_b

Trồng cây

Đề bài

Mô tả

Một công viên mới rất đẹp vừa được xây dựng ở Hà Nội. Harry được giao nhiệm vụ trồng cây trong công viên.

Công viên có thể hình dung như một lưới gồm N hàng và N cột. Các hàng được đánh số từ 1 đến N từ trên xuống dưới, các cột được đánh số từ 1 đến N từ trái sang phải. Ký hiệu ô ở hàng i, cột j là (i,j).

Harry cần trồng đúng N cây sao cho mỗi hàng và mỗi cột có đúng một cây.

Lối vào công viên ở ô (1,1) và lối ra ở ô (N,N), nên Harry không được trồng cây ở 2 ô này. Hơn nữa, phải tồn tại một đường đi từ lối vào đến lối ra mà khách tham quan chỉ cần đi sang phải hoặc đi xuống. Hiển nhiên khách không thể đi qua ô có cây.

Một số ví dụ với N=4 (T là ô có cây, dấu chấm là ô trống):

. . . T      T . . .      . T . .      . . . T
. . T .      . . . T      T . . .      . T . .
. . T .      . . T .      . . . T      . . T .
T . . .      . . . .      . . T .      T . . .
  (1)          (2)          (3)          (4)
  • Công viên (1) không hợp lệ vì cột 3 có 2 cây.
  • Công viên (2) không hợp lệ vì ô (1,1) có cây và chỉ có 3 cây.
  • Công viên (3) không hợp lệ vì không thể đi từ (1,1) đến (4,4) chỉ bằng các bước sang phải hoặc xuống.
  • Công viên (4) hợp lệ.

Hãy giúp Harry đếm số công viên hợp lệ. Hai công viên được coi là khác nhau nếu có ít nhất một cây ở vị trí khác nhau trong hai công viên.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên T (T≤105) là số bộ dữ liệu.
  • T dòng tiếp theo, mỗi dòng chứa một số nguyên N (1≤N≤107).

Dữ liệu ra

In ra đúng T dòng, mỗi dòng là số cách trồng cây thỏa mãn mọi điều kiện. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Ràng buộc

  • 1≤T≤105.
  • 1≤N≤107.

Ví dụ

Input Output Giải thích
4
1
2
3
4
0
0
2
12
Với N=1 và N=2 không có cách nào. Với N=3, hai cách hợp lệ là trồng cây ở các ô (1,2),(2,3),(3,1) hoặc (1,3),(2,1),(3,2). Ví dụ trong đề gốc ghi T=3 nhưng có 4 giá trị N; ở đây sửa thành T=4.
3
5
6
7
70
464
3498

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0