#1416. [ACSL] 2021-2022 Contest 2 Fibonacci cypher

[ACSL] 2021-2022 Contest 2 Fibonacci cypher

描述

使用 斐波那契密码(Fibonacci Cypher) 对给定消息进行编码。

斐波那契序列从两个非负整数开始,之后的每一项都是前两项之和。为了保证每一项都是唯一的数字,本题中使用的斐波那契序列定义为:

1, 2, 3, 5, 8, 13, …

斐波那契密码使用上述序列以及一个输入的 密钥(字母表中的一个小写字母)将一条消息编码为一系列整数。只要知道所使用的密钥,另一方就可以对编码结果进行解码。

对于消息中的每一个字符,按照以下步骤生成对应的整数:

  1. 找到与该字符位置相同索引的斐波那契数
    (例如:输入字符串中的第 1 个字符使用斐波那契数 1,第 5 个字符使用斐波那契数 8)。

  2. 使用输入的密钥字母,在字母表中按步骤 1 得到的斐波那契数进行偏移,得到一个新的字母。
    如果超出了字母表末尾,则从字母表开头继续循环。
    (例如:若密钥为 p,斐波那契数为 21,则得到的新字母为 k。)

  3. 将字符串中该字符的 ASCII 码与步骤 2 中得到的新字母的 ASCII 码相加,得到该字符的编码值。


示例

对于字符串 "ACSL c2" 和密钥字母 'h',编码过程如下所示:

  • 第 1 个字符

    • 斐波那契偏移量:1
    • h + 1 = ii 的 ASCII 值为 105
    • 'A' 的 ASCII 值为 65
    • 计算:65 + 105 = 170
  • 第 2 个字符

    • 斐波那契偏移量:2
    • h + 2 = jj 的 ASCII 值为 106
    • 'C' 的 ASCII 值为 67
    • 计算:67 + 106 = 173
  • 第 3 个字符

    • 斐波那契偏移量:3
    • h + 3 = kk 的 ASCII 值为 107
    • 'S' 的 ASCII 值为 83
    • 计算:83 + 107 = 190
  • 第 4 个字符

    • 斐波那契偏移量:5
    • h + 5 = mm 的 ASCII 值为 109
    • 'L' 的 ASCII 值为 76
    • 计算:76 + 109 = 185
  • 第 5 个字符(空格)

    • 斐波那契偏移量:8
    • h + 8 = pp 的 ASCII 值为 112
    • 空格的 ASCII 值为 32
    • 计算:32 + 112 = 144
  • 第 6 个字符

    • 斐波那契偏移量:13
    • h + 13 = uu 的 ASCII 值为 117
    • 'c' 的 ASCII 值为 99
    • 计算:99 + 117 = 216
  • 第 7 个字符

    • 斐波那契偏移量:21
    • h + 21 = cc 的 ASCII 值为 99
    • '2' 的 ASCII 值为 50
    • 计算:50 + 99 = 149

编码后的消息为:

170 173 190 185 144 216 149


输入输出格式

输入

共有 5 组数据
每组数据包含两个值:

  1. 一个 小写英文字母,表示密钥;
  2. 一个 字符串,表示需要编码的消息。

消息长度不超过 30,且不包含双引号("),可以包含键盘上可输入的任意字符。

输出

对于每一组输入,输出一行整数,表示对应的编码结果。
各整数之间用 单个空格 分隔。