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.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