题解思路
这道题目要求我们根据给定的字符串,依次执行几个操作。题目中涉及到的关键点是处理质数位置的字符。考虑到字符串的长度可能非常大(最大长度为2×105),我们需要优化质数判定部分,因此建议使用欧拉筛来找出所有质数位置。具体步骤如下:
步骤解析
- 筛选质数位置的字符:
- 题目要求从字符串中选择位于质数位置的字符。质数位置指的是索引是质数的那些位置(例如2、3、5、7等)。
- 由于字符串长度最大为2×105,我们可以通过欧拉筛法快速筛选出所有质数位置。
题目内容
对于给定的字符串S1S2⋅⋅⋅Sn(下标从1开始),你需要依次执行以下操作:
- 筛选出所有位于质数位置(位置从1开始计数)的字符构成新字符串s′;
- 将s′按 ASCII 码值从小到大排序,得到s′′
- 对s′′中每个字符进行转换:奇数位置的字符转化为大写字母,偶数位置的字符转化为小写字母,得到s′′;
- 计算s′′′中所有字符ASCII 码值的异或和。
输入描述
第一行输入一个长度为1≦len(s)≦2×105,由大小写字母混合构成的字符串s。
输出描述
输出一个整数表示最终异或和。
样例1
输入
AbCDef
输出
100
说明
在这个样例中:
筛选出所有位于质数位置(位置从1开始计数)的字符构成新字符串s’=′′bCe′′;
将按 ASCII 码值从小到大排序,得到s′′=′′Cbe′′;
对s′′中每个字符进行转换:奇数位置的字符转化为大写字母,偶数位置的字符转化为小写字母,得到s'"= ′′CbE′′;
计算s′′′中所有字符ASCII 码值的异或和为 67xor98xor69=100。