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

Đặt dấu cộng

Đề bài

Mô tả

Cho một xâu gồm n chữ số. Ta chèn đúng k dấu cộng vào các vị trí giữa hai chữ số liên tiếp sao cho thu được một biểu thức số học hợp lệ: không có hai dấu cộng nào đứng cạnh nhau (giữa hai dấu cộng bất kỳ phải có ít nhất một chữ số), và không có dấu cộng nào đứng ở đầu hoặc cuối xâu. Nói cách khác, ta chọn đúng k trong số n1 khe giữa các chữ số liên tiếp.

Ví dụ, với xâu 100500 thì 100500 (không chèn dấu cộng nào), 1+00+500 và 10050+0 là các cách chèn hợp lệ, còn 100++500, +1+0+0+5+0+0 và 100500+ thì không.

Mỗi cách chèn cho ra một biểu thức; giá trị của biểu thức là tổng các số hạng, trong đó các chữ số 0 đứng đầu mỗi số hạng bị bỏ qua (chẳng hạn số hạng 08 có giá trị 8).

Hãy tính tổng giá trị của tất cả các biểu thức thu được từ mọi cách chèn đúng k dấu cộng. Vì kết quả có thể rất lớn, hãy in ra phần dư của nó 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 xâu gồm đúng n chữ số.

Dữ liệu ra

In ra một số nguyên duy nhất: tổng giá trị của tất cả các biểu thức, lấy phần dư khi chia cho 109+7.

Ràng buộc

  • 0k<n105
  • Xâu chỉ gồm các chữ số từ 0 đến 9, có thể có chữ số 0 đứng đầu.

Ví dụ

Input Output Giải thích
3 1
108
27 2 cách chèn đúng 1 dấu cộng: 1+08=910+8=18. Tổng là 9+18=27. Lưu ý số hạng 08 được tính là 8.
3 2
108
9 Chỉ có 1 cách chèn 2 dấu cộng: 1+0+8=9.

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