小红需要用十六进制密钥对数据进行循环异或。对数据的第 i 个十六进制字符,与密钥第 i mod |key| 个字符表示的四位数值异或,并输出对应的大写十六进制字符。
第一行输入测试组数 t 。接下来 t 行,每行输入非空字符串 `key data`。 保证 1 ≤ t ≤ 200 ,每个字符串长度不超过 10^4 ,字符仅含 `0` 到 `9`、`A` 到 `F`;所有测试数据字符串的总长度不超过 5 × 10^5 。
输出 t 行循环异或结果,每行长度与对应 `data` 相同。
1 A 1234
B89E
1 FF A5
5A
2 AB 12345 FF A5
B99FF 5A
考点:模拟
数据规模 n ≤ 500000 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:模拟
本题切入点
把 data 的每个十六进制字符与 key[i mod |key|] 的十六进制值做异或,再格式化成大写十六进制字符,循环取模即可。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
对照本题
样例 1:输入 1 / A 1234 → 输出 B89E
密钥 A 循环到四位后逐位与数据异或。
样例 2:输入 1 / FF A5 → 输出 5A
A xor F=5,5 xor F=A。
样例 3:输入 2 / AB 12345 / FF A5 → 输出 B99FF / 5A
密钥不足时从头循环使用。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月12号开发岗。