#P1557. Mapmaker
Mapmaker
题目描述
赛博软件计算机公司(编程语言领域的领导者)聘请你开发一种名为A--的新编程语言。你的任务是处理该语言中的数组映射问题:将数组引用(如)转换为实际物理地址。为此,你需要编写一个程序,读取数组声明和引用,并计算每个引用的物理地址,结果以十进制整数形式输出。
数组引用的物理地址计算公式为:,其中常数到的计算方式如下:
- :数组的基地址
- :数组的维度数
- :第维的下界
- :第维的上界
- :数组元素的大小(字节)
- (对于)
输入格式
输入的第一行包含两个正整数:(数据文件中定义的数组数量)和(需要计算地址的数组引用数量)。接下来的行每行定义一个数组,格式如下:
- 数组名(长度不超过10个字符)
- 数组的基地址(正整数)
- 每个数组元素的大小(字节,正整数)
- 数组的维度数(1 ≤ ≤ 10)
- 对整数,表示数组各维度的下界和上界(共个整数)
随后的行每行包含一个数组引用,格式为:数组名后跟个整数索引,其中是该数组的维度。
输出格式
对每个数组引用,输出一行,格式为:
- 数组名
- 左方括号$[`
- 各索引值(每对索引之间用逗号加空格分隔)
- 右方括号`]$、空格、等号、空格
- 计算得到的物理地址
输入示例1
3 4
ONE 1500 2 2 0 3 1 5
TWO 2000 4 3 1 4 0 5 5 10
THREE 3000 1 1 1 9
ONE 2 4
THREE 7
TWO 2 0 6
TWO 3 3 9
输出示例1
ONE[2, 4] = 1526
THREE[7] = 3006
TWO[2, 0, 6] = 2148
TWO[3, 3, 9] = 2376
来源
Mid-Central USA 1996