trang chủ / bài tập / turitape

Băng Turing

Đề bài

Mô tả

INTERCAL là một trong những ngôn ngữ lập trình kỳ quặc nhất từng được tạo ra. Một đặc trưng của nó là phương pháp xuất ký tự gọi là Turing Tape, biến đổi một mảng các số nguyên 8 bit không dấu thành chuỗi ký tự được in ra.

Mảng a1,a2,,an được xử lý lần lượt theo các bước sau (với phần tử thứ i):

  1. Lấy mã ASCII của ký tự vừa được in trước đó, biểu diễn dưới dạng 8 bit nhị phân, rồi đảo ngược thứ tự 8 bit đó. Với phần tử đầu tiên (i=1), kết quả của bước này được quy ước là 0.
  2. Lấy kết quả của bước 1 trừ đi ai rồi lấy modulo 256.
  3. Biểu diễn kết quả của bước 2 dưới dạng 8 bit nhị phân và đảo ngược thứ tự bit để thu được mã ASCII của ký tự thứ i cần in.

Cho trước chuỗi ký tự được sinh ra theo phương pháp trên, hãy khôi phục mảng ban đầu.

Dữ liệu vào

Một dòng duy nhất chứa chuỗi ký tự s được in ra.

Dữ liệu ra

In ra mảng a, mỗi phần tử trên một dòng.

Ràng buộc

  • 1|s|100
  • Mỗi ký tự của s có mã ASCII trong đoạn [32,126] (từ dấu cách đến dấu ngã).

Ví dụ

Input Output Giải thích
Hello, World! 238
108
112
0
64
194
48
26
244
168
24
16
162
Ký tự đầu tiên là "H" có mã ASCII 72=010010002. Đảo ngược 8 bit cho 000100102=18. Vì bước 1 cho kết quả 0, ta có a1=(018)mod256=238.
o2^"t 10
170
210
54
22
Chuỗi dài 5 nên mảng có 5 phần tử.

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