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

Sáng Tác Bài Hát

Đề bài

Mô tả

Cho một xâu mẫu P và độ dài N. Hãy xây dựng xâu S độ dài N chỉ gồm K ký tự đầu của bảng chữ cái tiếng Anh (tức các ký tự từ a đến ký tự thứ K), sao cho P xuất hiện trong S tại đúng các vị trí được chỉ định.

Cụ thể, cho xâu nhị phân T độ dài N|P|+1. Với mỗi i từ 1 đến |T|:

  • Nếu Ti=1 thì P phải xuất hiện trong S bắt đầu từ vị trí i (tức SiSi+1Si+|P|1=P).
  • Nếu Ti=0 thì P không được xuất hiện trong S bắt đầu từ vị trí i.

Lưu ý rằng các lần xuất hiện của P có thể chồng lấn nhau.

Dữ liệu vào

  • Dòng 1: hai số nguyên NK (1N100, 2K26).
  • Dòng 2: xâu P gồm các chữ cái thường trong K ký tự đầu tiên của bảng chữ cái, 1|P|N.
  • Dòng 3: xâu nhị phân T độ dài N|P|+1.

Dữ liệu ra

In ra xâu S thỏa mãn yêu cầu. Nếu có nhiều đáp án, in ra một đáp án bất kỳ. Nếu không tồn tại, in ra No solution.

Ràng buộc

  • 1N100
  • 2K26
  • 1|P|N

Ví dụ

Input Output Giải thích
5 2
a
10001
abbba P= "a" phải xuất hiện tại vị trí 15, không xuất hiện tại các vị trí khác. Xâu "abbba" thỏa mãn vì S1=S5= a, còn S2=S3=S4= b.
5 2
aba
101
ababa Hai lần xuất hiện chồng lấn tại vị trí 13: S1..3= "aba" và S3..5= "aba" cùng dùng chung ký tự S3= a.
6 2
abba
101
No solution Hai lần xuất hiện tại vị trí 13 buộc S3 phải đồng thời bằng b (từ "abba" bắt đầu tại 1) và bằng a (từ "abba" bắt đầu tại 3), mâu thuẫn.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0