trang chủ / đề bài / 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 c1c2…ck được xem là một số nguyên có giá trị c1·10k−1+c2·10k−2+…+ck (khối có thể bắt đầu bằng chữ số 0, khi đó giá trị của nó nhỏ hơn 10k−1).

Cho hai dãy a1,a2,…,an/k và b1,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 n và k.
  • 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

  • 1≤n≤100000
  • 1≤k≤min(n,9), và n chia hết cho k
  • 1≤ai<10k
  • 0≤bi≤9

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: 100−10=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: 34−4=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.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