提出 #42829746
ソースコード 拡げる
use proconio::input;
fn mul(a: &[Vec<usize>], b: &[Vec<usize>], modp: usize) -> Vec<Vec<usize>> {
let n = a.len();
let mut c = vec![vec![0_usize; n]; n];
for i in 0..n {
for j in 0..n {
for k in 0..n {
c[i][j] += a[i][k] * b[k][j];
c[i][j] %= modp;
}
}
}
c
}
fn main() {
input! {
n: usize,
mut k: usize,
m: [[usize; n]; n],
}
let modp = 1_000_000_007_usize;
let mut r = {
let mut unit = vec![vec![0_usize; n]; n];
for i in 0..n {
unit[i][i] = 1_usize;
}
unit
};
let mut t = m;
while k != 0 {
if (k & 1) == 1 {
r = mul(&r, &t, modp);
}
t = mul(&t, &t, modp);
k >>= 1;
}
let mut ans = 0_usize;
for i in 0..n {
ans += r[i].iter().sum::<usize>();
ans %= modp;
}
println!("{}", ans);
}
提出情報
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| 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 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 7 ms | 2148 KiB |
| 0_01 | AC | 2 ms | 2044 KiB |
| 0_02 | AC | 2 ms | 2068 KiB |
| 0_03 | AC | 2 ms | 2056 KiB |
| 0_04 | AC | 3 ms | 1884 KiB |
| 1_00 | AC | 1 ms | 2072 KiB |
| 1_01 | AC | 2 ms | 2096 KiB |
| 1_02 | AC | 6 ms | 2080 KiB |
| 1_03 | AC | 62 ms | 2200 KiB |
| 1_04 | AC | 4 ms | 2032 KiB |
| 1_05 | AC | 61 ms | 2152 KiB |
| 1_06 | AC | 4 ms | 2208 KiB |
| 1_07 | AC | 79 ms | 2020 KiB |
| 1_08 | AC | 44 ms | 2156 KiB |
| 1_09 | AC | 61 ms | 2064 KiB |
| 1_10 | AC | 61 ms | 2084 KiB |
| 1_11 | AC | 54 ms | 2200 KiB |
| 1_12 | AC | 55 ms | 2104 KiB |
| 1_13 | AC | 65 ms | 2156 KiB |
| 1_14 | AC | 62 ms | 2016 KiB |
| 1_15 | AC | 60 ms | 2092 KiB |
| 1_16 | AC | 62 ms | 2104 KiB |
| 1_17 | AC | 60 ms | 2120 KiB |