#1494. 三维数组下标查询
三维数组下标查询
题目描述
给定一个大小为 的三维数组 ,其三个维度的下标分别从 开始,即第一维下标从 到 ,第二维下标从 到 ,第三维下标从 到 。
我们将从 到 的所有整数,按照优先遍历较高维度(即类似于多重循环中,最外层为第一维,中间为第二维,最内层为第三维)的顺序依次填入该三维数组中。具体来说,填入的顺序依次为:$a[0][0][0], a[0][0][1], \dots, a[0][0][h-1], a[0][1][0], \dots$ 以此类推,直至 。
现在给出 次询问,每次询问给定一个目标数字 ,请你求出数字 在三维数组中对应的三个维度的下标。
输入格式
第一行包含一个正整数 —— 表示询问的次数。
接下来 行,每行包含四个整数 —— 分别表示三维数组三个维度的大小,以及每次询问的目标数字。
输出格式
对于每次询问,输出一行三个整数 ,分别表示数字 在三维数组中对应的第一维、第二维和第三维下标。相邻整数之间用一个空格隔开。
样例输入 1
2
2 3 4 11
2 2 2 7
样例输出 1
0 2 3
1 1 1
说明
样例解释
- 在第一个询问中,三维数组的大小为 。
数字 会填满第一维下标为 的所有位置。其中数字 是该区域的最后一个数,对应第二维下标的最大值 和第三维下标的最大值 。因此坐标为
0 2 3。 - 在第二个询问中,三维数组大小为 ,共 个元素。数字 是最后一个填入的数,对应的坐标显然是最大下标
1 1 1。
数据范围
- 对于所有测试点,保证 。
- 对于每次询问,保证 。
- 对于每次询问,保证 。
- 保证所有的输入数值均为整数。