Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;const int MOD = (int)1e9 + 7;int SZ;struct Matrix {int num[105][105];void setZero() {memset(num, 0, sizeof(num));}void setOne() {setZero();for (int i = 0; i < SZ; ++i)num[i][i] = 1;}void cp(const Matrix& other) {for (int i = 0; i < SZ; ++i)for (int j = 0; j < SZ; ++j)num[i][j] = other.num[i][j];}void build(const int& k) {setZero();for (int i = 0; i < SZ; ++i)for (int j = 0; j < SZ; ++j)if (i <= min(9, k) && j <= min(9, k) && i * j <= k)