Submission #15081435
Source Code Expand
#!/usr/bin/env python3
#from collections import defaultdict
#from heapq import heappush, heappop
import sys
import numpy as np
sys.setrecursionlimit(10**6)
input = sys.stdin.buffer.readline
INF = 10 ** 9 + 1 # sys.maxsize # float("inf")
MOD = 10 ** 9 + 7
def debug(*x):
print(*x, file=sys.stderr)
def solve(N, K, X):
def modmul(x, y):
ret = np.zeros(x.shape, np.int64)
for i in range(N):
for j in range(N):
v = x[i, :] * y[:, j]
v %= MOD
ret[i, j] = v.sum() % MOD
return ret
powK = np.eye(N, dtype=np.int64)
while K:
if K & 1:
powK = modmul(powK, X)
X = modmul(X, X)
K //= 2
return powK.sum() % MOD
def main():
# parse input
N, K = map(int, input().split())
X = np.int64(read().split())
X = X.reshape((N, N))
print(solve(N, K, X))
# tests
T1 = """
4 2
0 1 0 0
0 0 1 1
0 0 0 1
1 0 0 0
"""
def test_T1():
"""
>>> as_input(T1)
>>> main()
6
"""
T2 = """
3 3
0 1 0
1 0 1
0 0 0
"""
def test_T2():
"""
>>> as_input(T2)
>>> main()
3
"""
T3 = """
6 2
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0
"""
def test_T3():
"""
>>> as_input(T3)
>>> main()
1
"""
T4 = """
1 1
0
"""
def test_T4():
"""
>>> as_input(T4)
>>> main()
0
"""
T5 = """
10 1000000000000000000
0 0 1 1 0 0 0 1 1 0
0 0 0 0 0 1 1 1 0 0
0 1 0 0 0 1 0 1 0 1
1 1 1 0 1 1 0 1 1 0
0 1 1 1 0 1 0 1 1 1
0 0 0 1 0 0 1 0 1 0
0 0 0 1 1 0 0 1 0 1
1 0 0 0 1 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 1 1 0
"""
def test_T5():
"""
>>> as_input(T5)
>>> main()
957538352
"""
# add tests above
def _test():
import doctest
doctest.testmod()
def as_input(s):
"use in test, use given string as input file"
import io
global read, input
f = io.StringIO(s.strip())
def input():
return bytes(f.readline(), "ascii")
def read():
return bytes(f.read(), "ascii")
USE_NUMBA = False
if (USE_NUMBA and sys.argv[-1] == 'ONLINE_JUDGE') or sys.argv[-1] == '-c':
print("compiling")
from numba.pycc import CC
cc = CC('my_module')
cc.export('solve', solve.__doc__.strip().split()[0])(solve)
cc.compile()
exit()
else:
input = sys.stdin.buffer.readline
read = sys.stdin.buffer.read
if (USE_NUMBA and sys.argv[-1] != '-p') or sys.argv[-1] == "--numba":
# -p: pure python mode
# if not -p, import compiled module
from my_module import solve # pylint: disable=all
elif sys.argv[-1] == "-t":
print("testing")
_test()
sys.exit()
elif sys.argv[-1] != '-p' and len(sys.argv) == 2:
# input given as file
input_as_file = open(sys.argv[1])
input = input_as_file.buffer.readline
read = input_as_file.buffer.read
main()
Submission Info
| Submission Time |
|
| Task |
R - Walk |
| User |
nishiohirokazu |
| Language |
Python (3.8.2) |
| Score |
100 |
| Code Size |
3107 Byte |
| Status |
AC |
| Exec Time |
1711 ms |
| Memory |
27320 KiB |
Judge Result
| Set Name |
All |
| Score / Max Score |
100 / 100 |
| Status |
|
| Set Name |
Test Cases |
| All |
0_00, 0_01, 0_02, 0_03, 0_04, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17 |
| Case Name |
Status |
Exec Time |
Memory |
| 0_00 |
AC |
114 ms |
26752 KiB |
| 0_01 |
AC |
113 ms |
27020 KiB |
| 0_02 |
AC |
111 ms |
27004 KiB |
| 0_03 |
AC |
109 ms |
26884 KiB |
| 0_04 |
AC |
155 ms |
27040 KiB |
| 1_00 |
AC |
114 ms |
27068 KiB |
| 1_01 |
AC |
106 ms |
27000 KiB |
| 1_02 |
AC |
141 ms |
27068 KiB |
| 1_03 |
AC |
1230 ms |
27076 KiB |
| 1_04 |
AC |
138 ms |
27084 KiB |
| 1_05 |
AC |
1196 ms |
26968 KiB |
| 1_06 |
AC |
144 ms |
27076 KiB |
| 1_07 |
AC |
1711 ms |
27080 KiB |
| 1_08 |
AC |
947 ms |
27320 KiB |
| 1_09 |
AC |
1255 ms |
26908 KiB |
| 1_10 |
AC |
1259 ms |
27092 KiB |
| 1_11 |
AC |
1219 ms |
27132 KiB |
| 1_12 |
AC |
1138 ms |
27092 KiB |
| 1_13 |
AC |
1377 ms |
27252 KiB |
| 1_14 |
AC |
1324 ms |
26740 KiB |
| 1_15 |
AC |
1315 ms |
27096 KiB |
| 1_16 |
AC |
1407 ms |
26788 KiB |
| 1_17 |
AC |
1337 ms |
27084 KiB |