VOI 06 Bài 6 - Đường đi trên lưới

Xem dạng PDF

Gửi bài giải


Điểm: 0,16 (OI)
Giới hạn thời gian: 7.5s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Nguồn bài:
Ðề thi quốc gia 2006
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho một lưới ô vuông gồm ~m~ dòng và ~n~ cột. Các dòng được đánh số từ ~1~ đến ~m~ từ trên xuống dưới, các cột được đánh số từ ~1~ đến ~n~ từ trái qua phải. Ô nằm ở vị trí dòng ~i~ và cột ~j~ của lưới được gọi là ô ~(i~, ~j)~ và khi đó, ~i~ được gọi là tọa độ dòng còn ~j~ được gọi là tọa độ cột của ô này. Trên ô ~(i~, ~j)~ của lưới ghi số nguyên dương ~a_{ij}~, ~i = 1~, ~2~, ..., ~m~; ~j = 1~, ~2~, ..., ~n~. Trên lưới đã cho, từ ô ~(i~, ~j)~ ta có thể di chuyển đến ô ~(p~, ~q)~ nếu các điều kiện sau đây được thỏa mãn:

  • ~j < n~; ~i \leq p~; ~j \leq q~ và ~i + j < p + q~;
  • ~a_{ij}~ và ~a_{pq}~ có ước số chung lớn hơn ~1~.

Ta gọi một cách di chuyển từ mép trái sang mép phải của lưới là cách di chuyển bắt đầu từ một ô có tọa độ cột bằng ~1~ qua các ô của lưới theo qui tắc di chuyển đã nêu và kết thúc ở một ô có tọa độ cột bằng ~n~.

Yêu cầu: Tính số cách di chuyển từ mép trái lưới sang mép phải lưới.

Input

  • Dòng đầu tiên ghi ~2~ số nguyên dương ~m~, ~n~.
  • Dòng thứ ~i~ trong số ~m~ dòng tiếp theo ghi ~n~ số nguyên dương ~a_{i1}~, ~a_{i2}~, ..., ~a_{in}~ là các số trên dòng thứ ~i~ của lưới, ~i = 1~, ~2~, ..., ~m~.

Hai số liên tiếp trên cùng một dòng được ghi cách bởi ít nhất một dấu cách.

Output

Ghi ra 1 số nguyên là phần dư của số lượng cách di chuyển tìm được cho ~10^{9}~ .

Giới hạn

  • Trong tất cả các test: ~1 < m~, ~n \leq 100~; ~a_{ij} \leq 30000~, ~i = 1~, ~2~, ..., ~m~; ~j = 1~, ~2~, ..., ~n~.
  • Có ~50\%~ số lượng test với ~m~, ~n \leq 50~.

Sample Input 1

2 2
2 4
6 8

Sample Output 1

4

Sample Input 2

2 2
2 5
6 7

Sample Output 2

0

Bình luận

Hãy đọc nội quy trước khi bình luận.


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