I am not getting what’s wrong in my code.
Here’s my code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;
class SkeletonCP {
static final int mod = (int) 1e9 + 7;
static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter out = new PrintWriter(System.out);
static StringTokenizer str = new StringTokenizer("");
static int a[][] = new int[50][50];
static int I[][] = new int[50][50];
public static void arrayInput(int[] a, int n) throws IOException {
str = new StringTokenizer(in.readLine());
for (int i = 0; i < n; i++) {
a[i] = Integer.parseInt(str.nextToken());
}
}
public static void arrayInput_2D(int a[][], int m) throws IOException {
for (int i = 0; i < m; i++) {
str = new StringTokenizer(in.readLine());
for (int j = 0; j < m; j++) {
a[i][j] = Integer.parseInt(str.nextToken());
}
}
}
public static void matrixShow(int a[][], int m) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
out.print(a[i][j] + " ");
}
out.println();
}
}
public static void main(String[] args) throws IOException {
int t = Integer.parseInt(in.readLine());
while (t-- > 0) {
str = new StringTokenizer(in.readLine());
int m = Integer.parseInt(str.nextToken());
int n = Integer.parseInt(str.nextToken());
arrayInput_2D(a, m);
matrixExp(a, m, n);
matrixShow(I, m);
}
out.flush();
}
private static void matrixMul(int a[][], int b[][], int m) {
int res[][] = new int[m][m];
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
int c = 0;
for (int k = 0; k < m; k++) {
c += (a[i][k] * b[k][j]) % mod;
}
res[i][j] = c;
}
}
for (int i = 0; i < m; i++)
for (int j = 0; j < m; j++)
a[i][j] = res[i][j];
}
private static void matrixExp(int a[][], int m, int n) {
for (int i = 0; i < m; i++)
I[i][i] = 1;
while (n != 0) {
if (n % 2 != 0)
matrixMul(I, a, m);
matrixMul(a, a, m);
n /= 2;
}
}
}
created
last reply
- 2
replies
- 688
views
- 3
users