对称矩阵的压缩存储、基于压缩矩阵的矩阵乘法

def disp(A):#输出方阵A
    n=len(A)
    for i in range(n):
        for j in range(n):
            print('%d'%(A[i][j]),end="")
    print()

def compression(A,a):#压缩矩阵A到a中,A是一个对称矩阵
    for i in range(len(A)):
        for j in range(i+1):#这两循环遍历了三角,可以理解为上三角或者是下三角
            k=i*(i+1)//2+j#a中序号与A中序号之间的关系
            a[k]=A[i][j]

def getk(i,j):#求原矩阵中行号为i,列号为j在a中的位置
    if i>=j:
        return(i*(i+1)//2+j)
    else:
        return(j*(j+1)//2+i)

def Mult(a,b,C,n):#矩阵乘法,矩阵乘法的计算机形式的描述可以这样说,ij位置的元素的获得是这样操作的,第i行的所有元素*第j列的所有元素
    for i in range(n):
        for j in range(n):
            s=0
            for k in range(n):#这里是从a中获得相应的数字的
                k1=getk(i,k)
                k2=getk(k,j)
                s+=a[k1]*b[k2]
                C[i][j]=s