CCF历届真题 部分题解 ,点击进入
问题描述
试题编号:201903-3试题名称:损坏的RAID5时间限制:1.0s内存限制:512.0MB问题描述:
def xor(array,num,start): list1=[] for i in array: if i!=0: list1.append(i[start*8:start*8+8]) result=hex(int(list1[0],16)^int(list1[1],16))[2:].rjust(8,'0').upper() for i in list1[2:]: result=hex(int(result,16)^int(i,16))[2:].rjust(8,'0').upper() return result def get_index(index,n,s): a=index//s#条带编号 b=a//(n-1)#所在行 c=n-b%n-1#冗余带所在列 d=(c+a%(n-1)+1)%n#硬盘编号 e=index%s+b*s#第c个硬盘的第d块 return d,e n,s,l=map(int,input().split()) array=[0]*n lenth=0 for i in range(l): index,string=input().split() lenth=max(lenth,len(string)//8) array[int(index)]=string m=int(input()) for i in range(m): index=int(input()) #硬盘编号,起始位置 num,start=get_index(index,n,s) if start>lenth: print('-') elif array[num]!=0: #不在缺失盘上 print(array[num][start*8:start*8+8]) elif n==l+1:#在缺失盘上 print(xor(array,num,start)) else: print('-')
参考博客:https://blog.csdn.net/qq_44124301/article/details/100088700