CF132A Turing Tape
题目描述
INTERCAL 是最早的“恶搞”编程语言之一。它有许多奇怪的特性,其中之一就是基于字符的输出方法,被称为 Turing Tape 方法。该方法将一个无符号 8 位整数数组转换为要打印的字符序列,具体过程如下:
依次处理数组中的每一个整数,从第一个开始。处理第 $i$ 个元素时,分为三步:
1. 将前一个已打印字符的 ASCII 码的 8 位二进制表示反转。当处理第一个数组元素时,这一步的结果视为 0。
2. 用上一步的结果减去第 $i$ 个数组元素,并对 256 取模。
3. 将上一步结果的二进制表示再次反转,得到第 $i$ 个要打印字符的 ASCII 码。
现在给定用上述方法打印出的文本,请你还原出用于生成该文本的原始数组。
输入格式
输入为一行,包含字符串 $text$,即用上述方法打印出的消息。字符串 $text$ 的长度为 $1$ 到 $100$,每个字符的 ASCII 码在 $32$(空格)到 $126$(波浪号)之间。
输出格式
输出原始数组,每行一个整数。
说明/提示
让我们仔细分析示例的开头。第一个字符是 "H",其 ASCII 码为 $72=01001000_2$。反转后为 $00010010_2=18$,这个数应成为第二步的结果。第一步的结果被认为是 0,所以数组的第一个元素应为 $(0-18)\bmod 256=238$,其中 $a\bmod b$ 表示 $a$ 除以 $b$ 的余数。
由 ChatGPT 4.1 翻译