(int fac[][], int r)
| 177 | } |
| 178 | |
| 179 | void trans(int fac[][], int r) { |
| 180 | int i, j; |
| 181 | int b[][], inv[][]; |
| 182 | b = new int[r][r]; |
| 183 | inv = new int[r][r]; |
| 184 | int d = calDeterminant(km, r); |
| 185 | int mi = mi(d % 26); |
| 186 | mi %= 26; |
| 187 | if (mi < 0) |
| 188 | mi += 26; |
| 189 | for (i = 0; i < r; i++) { |
| 190 | for (j = 0; j < r; j++) { |
| 191 | b[i][j] = fac[j][i]; |
| 192 | } |
| 193 | } |
| 194 | for (i = 0; i < r; i++) { |
| 195 | for (j = 0; j < r; j++) { |
| 196 | inv[i][j] = b[i][j] % 26; |
| 197 | if (inv[i][j] < 0) |
| 198 | inv[i][j] += 26; |
| 199 | inv[i][j] *= mi; |
| 200 | inv[i][j] %= 26; |
| 201 | } |
| 202 | } |
| 203 | // System.out.println("\nInverse key:"); |
| 204 | // matrixtoinvkey(inv, r); |
| 205 | |
| 206 | invK = inv; |
| 207 | } |
| 208 | |
| 209 | public int mi(int d) { |
| 210 | int q, r1, r2, r, t1, t2, t; |
no test coverage detected