Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## (с) 51i\/4|)^^|\| ##
- def get_n(): # считает n для матрицы из файла input.txt
- file = open("input.txt", "r")
- s = file.readline()
- spaces = 0
- for i in s:
- if i == " ":
- spaces += 1
- file.close()
- return spaces + 1
- def init(n): # возвращает пустую матрицу n*n
- mat = []
- for i in range(n):
- s = []
- for j in range(n):
- s.append(0)
- mat.append(s)
- return mat
- def print_mat(mat): # выводит матрицу mat на экран
- for i in range(n):
- s = ""
- for j in range(n):
- s += str(mat[i][j]) + " "
- s = s[:len(s)-1]
- print(s)
- def write_mat(mat, file): # записывает матрицу mat в файл file
- for i in range(n):
- s = ""
- for j in range(n):
- s += str(result[i][j]) + " "
- s = s[:len(s)-1] + '\n'
- file.write(s)
- def mult(matrix1, matrix2, n): # умножает матрицу matrix1 на матрицу matrix2 размерами n*n и возвращает результат
- mat = init(n)
- for h in range(n):
- for i in range(n):
- for j in range(n):
- mat[i][j] += matrix1[i][h] * matrix2[h][j]
- return mat
- def k_pow(matrix, n, k): # возводит матрицу matrix n*n в степень k и возвращает результат
- if k == 0:
- return get_unit(n)
- if k == 1:
- return matrix
- if k == 2:
- return mult(matrix, matrix, n)
- else:
- return mult(k_pow(matrix, n, k - 1), matrix, n)
- def get_unit(n): # возвращает единичную матрицу n*n
- result = init(n)
- for i in range(n):
- for j in range(n):
- if i == j:
- result[i][j] = 1
- return result
- # там бэкенд
- #----------------------------------------------------------------------
- # тут фронтенд
- n = get_n() # получаем n
- matrix = []
- inp = open("input.txt", "r")
- out = open("output.txt", "w")
- for i in range(n):
- matrix.append([int(j) for j in inp.readline().split()]) # считываем матрицу из файла
- print("Matrix that was read from ./input.txt :")
- print()
- print_mat(matrix)
- print()
- k = int(input("Enter the pow: "))
- print()
- print("----------------------------------------------------------")
- print()
- result = k_pow(matrix, n, k) # считаем результат
- write_mat(result, out)
- print_mat(result)
- print()
- print("The result was wrote to ./output.txt")
- print()
- inp.close()
- out.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement