Palindrome XOR

Đề bài

Mô tả

Cho một xâu s gồm các ký tự 1, 0?. Ký tự đầu tiên của s được đảm bảo là 1. Gọi m là độ dài của s.

Đếm số cặp số nguyên (a,b) thỏa mãn đồng thời các điều kiện sau:

  • 1a<b<2m.
  • Biểu diễn nhị phân của a và biểu diễn nhị phân của b (viết không có số 0 đứng đầu) đều là xâu đối xứng (palindrome).
  • Biểu diễn nhị phân của ab (XOR theo bit) có cùng độ dài với s, và với mọi vị trí i, ký tự thứ i của xâu đó hoặc bằng ký tự thứ i của s, hoặc ký tự thứ i của s?.

Lưu ý: ab phải có đúng m chữ số nhị phân (không có số 0 đứng đầu), nghĩa là bit cao nhất của ab luôn là 1 — phù hợp với s1=1.

In ra kết quả theo modulo 998244353.

Dữ liệu vào

Một dòng duy nhất chứa xâu s (1|s|1000) gồm các ký tự 1, 0?. Ký tự đầu tiên của s1.

Dữ liệu ra

In ra một số nguyên duy nhất là số cặp (a,b) thỏa mãn các điều kiện trên, theo modulo 998244353.

Ràng buộc

  • 1|s|1000.
  • s chỉ gồm các ký tự 1, 0, ?.
  • Ký tự đầu tiên của s1.

Ví dụ

Input Output Giải thích
10110 3 Các cặp (viết ở hệ 2) là (111,10001), (11,10101), (1001,11111).
1?0???10 44 44 cặp thỏa mãn.
1 0 m=1 nên b<2, không tồn tại cặp (a,b) với a<b và cả hai đều dương.
11111 0 Bit cuối của ab luôn là 0 (vì cả ab đều lẻ — palindrome bắt đầu bằng 1), nên không thể khớp sm=1.

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