地址空间是 32G = 2^35 字节,但题目保证实际存储总量不超过 16MB,所以不能真的开 32G 数组,应该用 哈希表 只存被写过的字节。
设:
mem[address] = byte00最近小明正在研究什么是虚拟化内存,于是小明想自己亲自动手试一试,你能帮助他吗?
实现一个地址范围为32G,可在范围内任意位置进行数据读写的虚拟化内存机制,数据默认清零。 功能:
PS:一个地址空间存一个数据,各地址空间独立
输入格式:Command Address Length Data
1、Command为Read、Write、Clear之一
2、Address采用64位无符号十六进制数,全大写
3、Length采用64位无符号十进制数,单位为“字节”
4、Data采用字节流(2个16进制数表示一个Byte),全大写;
5、如果指定的Length大于实际给定的Data,需要程序自行未尾补0,小于则末尾截断
每条指令一行,一个用例输入可以是多条指令混合,只有Read指令有输出。
每个用倒保证指令、参数格式正确,但不保证参数范围,需要程序照题目规格要求自行校验,参数不合法,则对应的指令无效。
每个用例保证需要存储的总数据量最大不超过16MB。一个用例最多不超过500条指令。
例如(3表示有3条指令)
3
Write 0x100 7 001122AA
Read 0x100 4
Clear
采用字节流(2个16进制数表示一个Byte),全大写
例如 001122AA
每条Read指令对应一行输出数据,如果指令给的参数不合法,对应的输出为空(不换行)。
输入1
1
Read 0x100 4
输出1
00000000
说明
0x100地址空间未被写入数据,默认返回全0,一共4个字节
输入2
3
Write 0x100 8 00001122AABBCCDD
Read 0x100 12
Clear
输出2
00001122AABBCCDD00000000
说明
0x100地址,前8个字节被写入了有效数据00001122AABBCCDD,读取0x100地址12字节数据,后4个字节补齐默认数0,因此结果为00001122AABBCCDD00000000
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.