#3867. [科大国创杯小学组 2025] 正方形划分

[科大国创杯小学组 2025] 正方形划分

题目描述

小可可发明了一种新的正方形划分方法。

首先我们有一个正方形,我们称该图形为第 00 轮的图形。我们将这个正方形均匀划分成 44 个部分——左上、右上、左下和右下,分别将其编号为 ABCD\tt{ABCD},称新的图形为第 11 轮的图形。

我们再将第一个图形所划分的每一个部分 ABCD\tt{ABCD},分别再分成 44 个部分,称新的图形为第 22 轮的图形。对于该图形的每个部分的命名方式为该部分所属第 11 轮的部分的编号 +ABCD+ \tt{ABCD}。如:原来第 11 轮的 A\tt A 部分的右上部分的编号为 AB\tt{AB}

33 轮及以上的图形以此类推。这样每个方格都有一个编号,同时也有一个位置,即第几行(从上往下数)第几列 (从左往右数)。现在小可可想实现编号与其位置的相互转化,请你写一份程序帮帮他。

输入格式

本题有多组测试数据,输入第一行一个整数 TT 表示测试数据组数,接下来输入每组数据。

对于每组测试数据共一行,有以下两种可能:

  • 00 nn xx yy 表示该测试数据需要求出第 nn 轮的图形中第 xx 行第 yy 列的格子的编号。
  • 11 strstr 表示该测试数据需要求出编号为 strstr 的格子的位置。

如果仍然对输入方式不够清楚,可以去观察输入输出样例和样例解释。

输出格式

对于每组测试数据:

  • 如果输入的测试数据为 00 nn xx yy 的形式,输出一行一个字符串 strstr 表示该格子编号。
  • 如果输入的测试数据为 11 strstr 的形式,输出一行三个整数 n,x,yn, x, y 表示该格子位于第 nn 轮图形的第 xx 行第 yy 列。

输入输出样例 #1

输入 #1

3
0 1 2 1
1 AB
0 2 3 4

输出 #1

C
2 1 2
DB

说明/提示

样例解释

第一行一个整数 33 表示我们一共有三组测试数据。

第一组测试数据 0 1 2 10 \ 1 \ 2 \ 1,表示我们要将第 11 轮图形的第 22 行第 11 列的位置转化为编号,根据题意描述中的图可知编号为 C\tt{C}

第二组测试数据 1 AB1 \ \tt{AB},表示我们要求出编号为 AB\tt{AB} 的格子的位置,根据题意描述中的图可知它在第 22 轮第 11 行第 22 列。

第三组测试数据 0 2 3 40 \ 2 \ 3 \ 4,表示我们要将第 22 轮图形的第 33 行第 44 列的位置转化为编号,根据题意描述中的图可知编号为 DB\tt{DB}

约定和数据范围

  • 数据点 111T101 \leq T \leq 101n21 \leq n \leq 2
  • 数据点 2,32, 31T101 \leq T \leq 101n101 \leq n \leq 10
  • 数据点 4,54, 51T5×1041 \leq T \leq 5 \times 10^4n=10n = 10,即保证所有图形均为第 1010 轮图形。
  • 数据点 661T5×1041 \leq T \leq 5 \times 10^41n301 \leq n \leq 30,询问仅形如 00 nn xx yy
  • 数据点 7,1T5×1041 \leq T \leq 5 \times 10^41n301 \leq n \leq 30,询问仅形如 11 strstr
  • 数据点 8108 \sim 101T5×1041 \leq T \leq 5 \times 10^41n301 \leq n \leq 30