201903-3-损坏的RAID5
问题
思路
分类:
- 指定的块超出阵列总长度,则
print('-')
- 不超出阵列总长度
- 包含所请求数据的硬盘已知,则打印所请求的数据
- 现存的硬盘数足够(l >= n - 1),则通过异或计算获得缺失的数据
- 阵列不完整,现存的硬盘数不足够(l < n - 1),则
print('-')
核心算法在于计算所请求数据的硬盘地址和块偏移
实现
def func(txts): # 计算八位字符串异或值
out = 0
for txt in txts:
out = out ^ eval('0x' + txt)
return '%X' % (out,)
n, s, l = eval(input().replace(' ', ',')) # n硬盘的数目,s条带的大小,l现存的硬盘数目
disks = ['' for i in range(n)]
for i in range(l):
num, txt = input(