SỐ CÁCH ĐI

Xét một bàn cờ vua có kích thước \(m \times n\) gồm có \(m\) dòng, \(n\) cột. Các dòng được đánh số từ 1 đến \(m\), các cột được đánh số từ 1 đến \(n\). Một số nằm trên dòng \(x\), cột \(y\) được ký hiệu là \((x,y)\). Một quân mã xuất phát từ một ô trên ban cờ có thể đi đến một trong bốn ô như hình vẽ.

Ngoài ra, trên bàn cờ có \(k\) ô mà quân mã không được phép đi vào. Những ô này gọi là ô bị cấm.

Yêu cầu: Tìm số cách di chuyển của quân mã từ ô \((x,y)\) cho trước đến ô \(m,n)\).

Dữ liệu vào:

+ Dòng đầu tiên ghi 4 số nguyên \(m,n,k\)\(q\ (1 \leq m,n \leq 1000;0 \leq k \leq 10;1 \leq 10^{5})\)

+ Trên \(k\) dòng tiếp theo, mỗi dòng ghi 2 số nguyên \(k_{x_{i}},\ k_{y_{i}}\ \)cho biết ô \((k_{x_{i}},\ k_{y_{i}})\) bị cấm \((1 \leq k_{x_{i}} < m;1 \leq k_{y_{i}} < n)\);

+ Trên \(q\) dòng tiếp theo, mỗi dòng ghi 2 số nguyên \(x_{i},\ y_{i}\ (1 \leq x_{i} < m;1 \leq y_{i} < n)\)

Kết quả: Gồm \(q\) số nguyên \(w_{i}\), mỗi số trên một dòng cho biết số cách di chuyển quân mã từ ô \((x_{i},\ y_{i})\) cho trước đến ô \((m,n)\), trong đó \(w_{i}\) là phần dư của phép chia số cách quân mã di chuyển từ ô \(\left( x_{i},y_{i} \right)\) cho trước đến ô \((m,n)\) cho \(10^{9}\)

Ví dụ:

Input Output Input Output
4 5 1 3
2 4
1 2
3 3
2 4
1
1
0
4 5 0 2
1 2
3 3
2
1

Ràng buộc:

+ Có 30% số test tương ứng 30% số điểm có \(1 \leq m,n \leq 100;k = 0;q \leq 10^{2}\);

+ Có 20% số test khác tương ứng 20% số điểm có \(1 \leq m,n \leq 100;0 < k \leq 10;q \leq 10^{2}\);

+ Có 50% số test còn lại tương ứng 50% số điểm không có ràng buộc gì thêm.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. hungeazy08 (4/26)
  3. tung (2/5)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]