#303. [CFCOI Collection 4] 送分小水题

[CFCOI Collection 4] 送分小水题

题目描述

给定一个包含 A∼Z\texttt{A} \sim \texttt{Z} 和 *\texttt{*} 的字符串 SS。

首先,你需要将 SS 中的所有 *\texttt{*} 从左到右依次替换为 $\texttt{A},\texttt{B},\cdots,\texttt{Z},\texttt{A},\texttt{B},\cdots,\texttt{Z},\texttt{A},\cdots$,得到新的字符串 TT。

如对于字符串 S=A**B*S=\texttt{A**B*},替换后变为 T=AABBCT=\texttt{AABBC}。

接着,你需要计算一个数

$$H=\left(\sum_{i=1}^{|T|} (\operatorname{ord}(T_i)-1) \cdot 26^{|T|-i}\right) \bmod 2^{32}$$

其中 ord⁡(Ti)\operatorname{ord}(T_i) 表示 TiT_i 在所有大写字母中是在第几位,如 $\operatorname{ord}(\texttt{A})=1,\operatorname{ord}(\texttt{D})=4$。

你需要求出替换后的 TT 和 HH 的值。

输入格式

一行一个字符串 SS。

输出格式

第一行一个字符串 TT。

第二行一个整数 HH。

样例

A**B*
AABBC
704

说明/提示

对于 100%100\% 的数据:

  • 1≤∣S∣≤1061 \le |S| \le 10^6;
  • SiS_i 为 A∼Z,*\texttt{A} \sim \texttt{Z},\texttt{*} 中的一个。

本题开启捆绑测试。

  • Subtask #1(10 pts10 \ \text{pts}):SiS_i 不为 *\texttt{*}。
  • Subtask #2(10 pts10 \ \text{pts}):∣S∣≤1000|S| \le 1000。
  • Subtask #3(80 pts80 \ \text{pts}):无特殊限制。