trang chủ / bài tập / goodphone

Số điện thoại tốt

Đề bài

Mô tả

Một số điện thoại có đúng n chữ số (chữ số đầu tiên có thể là 0).

Cho số nguyên k là ước của n. Chia số điện thoại thành n/k khối liên tiếp, mỗi khối gồm k chữ số: khối thứ nhất gồm các vị trí 1,2,,k, khối thứ hai gồm các vị trí k+1,k+2,,2k, và cứ như vậy.

Mỗi khối c1c2ck được xem là một số nguyên có giá trị c1·10k1+c2·10k2++ck (khối có thể bắt đầu bằng chữ số 0, khi đó giá trị của nó nhỏ hơn 10k1).

Cho hai dãy a1,a2,,an/kb1,b2,,bn/k. Một số điện thoại được gọi là tốt nếu với mọi i, khối thứ i đồng thời thoả mãn:

  • Chữ số đầu tiên của khối thứ i khác bi;
  • Giá trị của khối thứ i chia hết cho ai.

Hãy đếm số lượng số điện thoại tốt có độ dài n, kết quả lấy phần dư khi chia cho 109+7.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk.
  • Dòng thứ hai chứa n/k số nguyên a1,a2,,an/k.
  • Dòng thứ ba chứa n/k số nguyên b1,b2,,bn/k.

Dữ liệu ra

Một số nguyên duy nhất: số lượng số điện thoại tốt độ dài n, lấy modulo 109+7.

Ràng buộc

  • 1n100000
  • 1kmin(n,9), và n chia hết cho k
  • 1ai<10k
  • 0bi9

Ví dụ

Input Output Giải thích
6 2
38 56 49
7 3 4
8 Có 3 khối, mỗi khối 2 chữ số. Khối 1 phải chia hết cho 38 và không bắt đầu bằng 7: chọn được 00, 38 (76 bị loại). Khối 2 chia hết cho 56, không bắt đầu bằng 3: chọn được 00, 56. Khối 3 chia hết cho 49, không bắt đầu bằng 4: chọn được 00, 98 (49 bị loại). Tổng cộng 2·2·2=8 số: 000000, 000098, 005600, 005698, 380000, 380098, 385600, 385698.
8 2
1 22 3 44
5 4 3 2
32400 Khối 1 chia hết cho 1 và không bắt đầu bằng 5: 10010=90 cách. Khối 2 chia hết cho 22 và không bắt đầu bằng 4: các bội 00, 22, 44, 66, 88 bỏ 44, còn 4 cách. Khối 3 chia hết cho 3, không bắt đầu bằng 3: 344=30 cách. Khối 4 chia hết cho 44, không bắt đầu bằng 2: 00, 44, 88 nên 3 cách. Kết quả 90·4·30·3=32400.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0