#722. 字符传输码
字符传输码
题目描述
小杨需要整理一个只包含英文字母和数字字符的传输串。处理时从左到右扫描字符串,并记录在当前位置之前已经出现的数字字符个数 d。
对于每个字符,按以下规则得到新的字符:
- 若当前字符是数字字符 x,则将它替换为数字字符 9-x,并在处理完该字符后把 d 增加 1;
- 若当前字符是英文字母,则先忽略原来的大小写,把它看成对应的大写字母,再向字母表后方移动 d 位。超过 Z 后从 A 继续。
例如,当 d=2 时,A 变为 C,Y 变为 A。
处理完全部字符后,还要计算校验和:变换后的数字字符按其数值 0~9 计分,变换后的字母按 A=1,B=2,……,Z=26 计分,所有字符得分之和就是校验和。
输入格式
输入一行一个字符串 s,保证 s 只包含数字字符和英文字母,且不含空格。
输出格式
第一行输出变换后的字符串。 第二行输出一个整数,表示校验和。
样例
a1B9z
A8C0B
14
Z0az
Z9BA
38
样例解释
样例 1 中,开始时 d=0,a 变为 A;数字 1 变为 8,随后 d=1;B 向后移动 1 位变为 C;数字 9 变为 0,随后 d=2;z 看成 Z 后向后移动 2 位变为 B。校验和为 1+8+3+0+2=14。
样例 2 按相同规则得到 Z9BA,校验和为 26+9+2+1=38。
数据范围
1 ≤ |s| ≤ 100000。字符串仅包含字符 0~9、A~Z、a~z。校验和不超过 2600000,可使用 int 保存。