Đảo ngược nhị phân của tổng

Đề bài

Mô tả

Cho hai xâu nhị phân xy, là biểu diễn nhị phân của hai số nguyên (gọi là f(x)f(y)).

Bạn có thể chọn một số nguyên k0 bất kỳ, tính giá trị

sk=f(x)+f(y)·2k

rồi viết biểu diễn nhị phân của sk theo thứ tự đảo ngược (ký hiệu là revk).

Ví dụ, với x=1010y=11, nếu chọn k=1 thì 21=102, nên sk=10102+112·102=100002revk=00001.

Với xy cho trước, hãy tìm k sao cho revknhỏ nhất theo thứ tự từ điển.

Dữ liệu đảm bảo với ràng buộc đã cho, luôn tồn tại k hữu hạn thoả mãn.

So sánh theo thứ tự từ điển: so sánh từng ký tự từ trái sang phải; tại vị trí đầu tiên khác nhau, xâu có ký tự nhỏ hơn (0 < 1) là xâu nhỏ hơn. Nếu một xâu là tiền tố của xâu kia thì xâu ngắn hơn là xâu nhỏ hơn.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên T — số lượng truy vấn.
  • Mỗi truy vấn gồm hai dòng: dòng thứ nhất là xâu nhị phân x, dòng thứ hai là xâu nhị phân y.

Dữ liệu ra

In ra T số nguyên, mỗi truy vấn một dòng: giá trị k làm cho revk nhỏ nhất theo thứ tự từ điển.

Ràng buộc

  • 1T100
  • Mỗi xâu x, y gồm các ký tự 0 hoặc 1, độ dài không quá 105.
  • 1f(y)f(x); cả hai biểu diễn đều không có chữ số 0 ở đầu.
  • Tổng độ dài của tất cả các xâu x không vượt quá 105, tổng độ dài của tất cả các xâu y không vượt quá 105.

Ví dụ

Input Output Giải thích
4
1010
11
10001
110
1
1
1010101010101
11110000
1
3
0
0
Truy vấn 1 đúng như ví dụ trong đề. Truy vấn 2: chọn k=3, s3=100012+1102·10002=10000012, rev3=1000001 — nhỏ hơn mọi lựa chọn khác.
1
11
10
0 s0=112+102=1012, rev0=101; đây là lựa chọn tối ưu.

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