Bỏ qua đến nội dung
Kho đề HSG Tin 9Đề thi cấp tỉnh/thành phố

Bài 2 · Lập trình

Xâu nhị phân

Điểm
6 điểm
Thời gian
1 giây
Bộ nhớ
1024MB
Tên chương trình
bina.*
Vào / Ra
bina.inp → bina.out

Đề bài

An rất thích chơi với xâu nhị phân (xâu nhị phân là xâu chứa các bit 0 và 1). Hôm nay An có một xâu nhị phân ss độ dài nn. Trước khi bắt đầu chơi với nó, anh ấy muốn đảm bảo rằng xâu đó không chứa quá kk bit liên tiếp giống nhau. Để đạt được điều đó, loại thao tác duy nhất anh ta được phép thực hiện là lật bất kỳ bit nào của xâu (bit 0 lật thành 1 và bit 1 lật thành bit 0).

Vì sắp đến giờ vào lớp nên An muốn nhờ bạn tìm số thao tác tối thiểu mà anh ấy cần. Ngoài ra, An cũng muốn bạn đưa ra một trong các xâu có được sau khi sửa đổi.

Dữ liệu vàobina.inp

Vào từ tệp văn bản bina.inp. Dòng đầu tiên chứa hai số nguyên nn và kk (1≤k≤n≤1051 \le k \le n \le 10^5). Dòng thứ hai chứa xâu nhị phân ss độ dài nn.

Kết quả rabina.out

Ghi ra tệp văn bản bina.out. Dòng đầu tiên in ra một số nguyên là số thao tác tối thiểu mà An cần. Dòng thứ hai in ra một trong các xâu có được sau khi sửa đổi.

Ràng buộc

  • Có 20% số test ứng với 20% số điểm thoả mãn: Tất cả các bit của xâu ss đều là 0 hoặc đều là 1;
  • 20% số test khác ứng với 20% số điểm thoả mãn: k=1k = 1;
  • 20% số test khác ứng với 20% số điểm thoả mãn: n≤20n \le 20;
  • 20% số test khác ứng với 20% số điểm thoả mãn: n≤103n \le 10^3;
  • 20% số test còn lại ứng với 20% số điểm: Không có thêm ràng buộc nào.

Chấm điểm: Nếu kết quả chỉ đúng dòng thứ nhất hoặc dòng thứ hai thì chương trình sẽ được 50% số điểm của test đó.

Ví dụ

Ví dụ 1

Dữ liệu vàobina.inp
2 1
11
Kết quả rabina.out
1
10

Giải thích

Trong ví dụ đầu tiên, bit 1 xuất hiện hai lần liên tiếp nên chúng ta có thể sửa đổi xâu 11 thành 10 bằng một thao tác lật bit thứ hai. Chú ý rằng bạn có thể đưa ra xâu sửa đổi là 01 bằng một thao tác lật bit thứ nhất.

Ví dụ 2

Dữ liệu vàobina.inp
2 2
11
Kết quả rabina.out
0
11

Giải thích

Trong ví dụ thứ hai, bạn không cần sửa đổi xâu vì xâu không có nhiều hơn 2 bit liên tiếp giống nhau.

Ví dụ 3

Dữ liệu vàobina.inp
4 1
1001
Kết quả rabina.out
2
1010

Giải thích

Trong ví dụ thứ ba, bit 0 xuất hiện hai lần liên tiếp nên chúng ta có thể sửa đổi xâu 1001 thành 1010 bằng hai thao tác lật bit thứ ba và thứ tư.

Thuộc đề thi

Kỳ thi chọn học sinh giỏi cấp tỉnh THCS năm 2024 — Môn thi: Tin học – Bảng A

Quảng Ninh · Cấp tỉnh · Năm học 2023-2024