CCF第三题(python):RAID5
nsl = input().split()
for i in range(3):
nsl[i] = eval(nsl[i])
s = [0] * 1001
ji = []
for i in range(nsl[2]):
s1 = input().split()
# s2 = s1[1]
ji.append(s1[0])
# s3 = [s2[i:i + 8] for i in range(0, len(s2), 8)]
s[eval(s1[0])] = s1[1]
n = eval(input())
for i in range(n):
d = eval(input())
n1 = nsl[0]
k = d // nsl[1] # 条带
h = k // (n1 - 1) # 行
p = abs((n1 - h - 1) % n1) # p位置
k1 = d % nsl[1] # 条带
if d > (nsl[0] - 1) * len(s[eval(ji[0])]) / 8 - 1:
print('-')
else:
w = ((d - h * nsl[1] * (nsl[0] - 1)) // nsl[1] + p + 1) % nsl[0]
w1 = d % nsl[1] + h * nsl[1]
if s[w] == 0:
z = int('0x' + s[eval(ji[0])][w1 * 8:w1 * 8 + 8], 16)
for i1 in range(1, len(ji)):
z = z ^ int('0x' + s[eval(ji[i1])][w1 * 8:w1 * 8 + 8], 16)
x = ('%#x' % z)
print(x[2:].upper())
elif s[w] != 0:
print(s[w][w1 * 8:w1 * 8 + 8])
else:
print('-')