trang chủ / đề bài / thhv16_bitrans

Biến đổi nhị phân

Đề bài

Mô tả

Với một dãy nhị phân bất kỳ, ta biến đổi dãy nhị phân như sau: mỗi chữ số của dãy được thay đồng thời theo quy tắc

  • 1→01
  • 0→10

Như vậy, với dãy bắt đầu là 1, sau bước biến đổi thứ nhất, ta sẽ thu được dãy 01. Sau phép biến đổi thứ 2, ta thu được 1001. Sau phép biến đổi thứ 3, ta thu được 01101001, ...

Người ta muốn tính xem, bắt đầu từ dãy 1, sau n bước biến đổi sẽ thu được dãy gồm có bao nhiêu cặp 2 số 0 đứng liên tiếp (tức là số vị trí i mà chữ số thứ i và chữ số thứ i+1 của dãy đều bằng 0). Với n=0, dãy chỉ gồm một chữ số 1.

Dữ liệu vào

Gồm một số test, mỗi test được ghi trên một dòng, mỗi dòng ghi một số nguyên không âm n. Dữ liệu kết thúc ở cuối file.

Dữ liệu ra

Với mỗi test, theo đúng thứ tự trong dữ liệu vào, ghi ra trên một dòng số cặp 2 số 0 đứng liên tiếp. Đáp án có thể rất lớn, cần in ra giá trị chính xác.

Ràng buộc

  • 0≤n≤1000.
  • Số test (số dòng) từ 1 đến 1000.

Subtasks

  • Subtask 1 (40% số test): n≤20.
  • Subtask 2 (40% số test): n≤50.
  • Subtask 3 (20% số test): n≤1000.

Ví dụ

Input Output Giải thích
2
3
1
1
Sau 2 bước được dãy 1001, có một cặp 00. Sau 3 bước được dãy 01101001, có một cặp 00 (chữ số thứ 6 và thứ 7).
4
0
1
5
10
3
0
0
5
171
Ví dụ bổ sung (không có trong đề gốc). Sau 4 bước được dãy 1001011001101001, có 3 cặp 00. Với n=0 (dãy 1) và n=1 (dãy 01) không có cặp nào.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0