#S10002. ABC变换

    ID: 998 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 普及 上传者: 标签>基础算法模拟字符串数学递归

ABC变换

题目描述

给定一个由字符 A、B、C 组成的字符串 SS。

我们定义 S(0)=SS^{(0)} = S。对于 i=1,2,3,…i = 1, 2, 3, \dots,S(i)S^{(i)} 是将 S(i−1)S^{(i-1)} 中的所有字符按照以下规则同时进行替换后得到的字符串:

  • A 替换为 BC
  • B 替换为 CA
  • C 替换为 AB

现在有 QQ 个查询,第 ii 个查询给出两个整数 tit_i 和 kik_i,请你输出字符串 S(ti)S^{(t_i)} 从左往右数的第 kik_i 个字符。

输入格式

第一行包含一个字符串 SS。

第二行包含一个正整数 QQ —— 查询的数量。

接下来 QQ 行,每行包含两个非负整数 tit_i 和 kik_i —— 分别表示第 ii 个查询的替换次数和字符位置。

输出格式

按照给定的顺序,逐行输出每个查询的结果(每次输出一个字符并换行)。

样例输入 1

ABC
4
0 1
1 1
1 3
1 6

样例输出 1

A
B
C
B

样例输入 2

CBBAACCCCC
5
57530144230160008 659279164847814847
29622990657296329 861239705300265164
509705228051901259 994708708957785197
176678501072691541 655134104344481648
827291290937314275 407121144297426665

样例输出 2

A
A
C
A
A

说明

样例解释

在第一个样例中,初始字符串为 S(0)=ABCS^{(0)} = \text{ABC}。 经过 11 次替换后,字符串变为 S(1)=BCCAABS^{(1)} = \text{BCCAAB}。

  • 第 11 个查询要求输出 S(0)S^{(0)} 的第 11 个字符,即 A。
  • 第 22 个查询要求输出 S(1)S^{(1)} 的第 11 个字符,即 B。
  • 第 33 个查询要求输出 S(1)S^{(1)} 的第 33 个字符,即 C。
  • 第 44 个查询要求输出 S(1)S^{(1)} 的第 66 个字符,即 B。

因此,按照顺序分别输出 A, B, C, B。

数据范围

  • 对于所有测试点,保证 SS 是一个长度在 11 到 10510^5 之间(包含边界)的字符串,且仅由字符 A、B、C 组成。
  • 对于所有测试点,保证 1≤Q≤1051 \le Q \le 10^5。
  • 保证 0≤ti≤10180 \le t_i \le 10^{18}。
  • 保证 1≤ki≤min⁡(1018,S(ti) 的长度)1 \le k_i \le \min(10^{18}, S^{(t_i)} \text{ 的长度})。
  • 保证所有的 Q,ti,kiQ, t_i, k_i 均为整数。