#P2105. ACSL 2023-2024 Senior Division Contest #2 ACSL Book

ACSL 2023-2024 Senior Division Contest #2 ACSL Book

题目描述

书加密法是一种发送者和接收者使用相同的文本对信息进行编码和解码的方法。发送者对信息进行编码时,使用 s.w.c 格式将要发送的信息中的每个字母数字字符替换为该字符在文本中的位置。s.w.c 格式代表文本中句子的编号 (s),句子中单词的编号 (w),单词中字符的编号 (c),所有编号均从 11 开始。接收者通过查找每个 s.w.c 字符串在文本中指定的字符来对编码信息进行解码。

在此程序中,将给定文本以及需编码的信息。使用 s.w.c 格式对信息中每个字符的位置进行编码。规则如下:

  • 文本或信息中可包含任意键盘字符,所有字母字符均区分大小写
  • 文本中的每个单词只包含字母数字字符,每个单词之间均用一个空格或任意非字母数字字符(一个或多个)分隔
  • 文本中的句子均以句号、问号或感叹号结束,且句子之间严格用两个空格分隔
  • 仅对信息中的字母数字字符进行编码,其它所有字符均在编码信息中保持其原样不变
  • 如果信息中出现空格,则使用下划线(_) 对其进行编码
  • 对于信息中每一个需编码的查找出信息中第 11 个字符在文本里第 11 次出现时 的位置;信息中第 22 个字符在文本里第 22 次出现时的位置;信息中第 33 个字符在文 本里第 33 次出现时的位置,以此类推
  • 我们保证信息中每个字符在文本里至少会出现一次
  • 如果发现文本中某个字符出现的次数没有那么多,则使用整数除法将该次数对半分, 直到出现可以查找出该字符的次数为止
    (例如,如果某字符没有第 1313 次出现,则去查找它第 66 次出现时的位置,如果没有出现第 66 次,就查找它第 33 次出现时的位置,如果还是没有,就再查找出它第 11 次出现时的位置)
  • 一个单词内每个 s.w.c 编码之间用一个空格分隔

输入格式

输入两个字符串:要使用的文本以及需编码的信息。文本不超过 20002000 个字符,信息不超过 400400 个字符。

输出格式

以字符串形式输出编码信息

输入输出样例

说明/提示

【样例 1】

见选手目录下的 book/book1.inbook/book1.ans

【样例 1 解释】

A 是信息中的第 11 个字符,所以要查找到 A 在文本中第 11 次出现的位置 (1.1.1)。"m"是信息中的第 22 个字符,所以要查找到 m 在文本中第 22 次出现的位置。 字符串 1.5.3 表示 m 是第 11 句话中第 55 个单词的第 33 个字符。Computer 中的 C 是信息中的第 99 个字符,但 C 在文本中并没有出现 99 次,因此要查找到第 44 次出现的 C,即第 22 句话的第 1818 个单词 Computer 中的第 11 个字符 (2.18.1)。

每个单词中的每一个编码字符之间都有一个空格,编码信息中所有非字母数字字符都保 持其在原始字符串中的形式不变,用下划线 (_)编码的空格除外。

【样例 2】

见选手目录下的 book/book2.inbook/book2.ans

【样例 3】

见选手目录下的 book/book3.inbook/book3.ans

【样例 4】

见选手目录下的 book/book4.inbook/book4.ans

【样例 5】

见选手目录下的 book/book5.inbook/book5.ans

附件下载

book.zip