#S10002. ABC变换

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

ABC变换

题目描述

给定一个由字符 ABC 组成的字符串 SS

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

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

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

输入格式

第一行包含一个字符串 SS

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

接下来 QQ 行,每行包含两个非负整数 tit_ikik_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 是一个长度在 1110510^5 之间(包含边界)的字符串,且仅由字符 ABC 组成。
  • 对于所有测试点,保证 1Q1051 \le Q \le 10^5
  • 保证 0ti10180 \le t_i \le 10^{18}
  • 保证 1kimin(1018,S(ti) 的长度)1 \le k_i \le \min(10^{18}, S^{(t_i)} \text{ 的长度})
  • 保证所有的 Q,ti,kiQ, t_i, k_i 均为整数。