반응형
https://www.acmicpc.net/problem/10830
왜 자꾸 틀리나했더니 long long int를 "%d"로 받고 있었습니다..
결과 행렬 aa를 단위행렬로 초기화해주고, 3중 포문으로 곱셈을 수행하였습니다.
#include <cstdio>
int n, i, j, k;
long long int b;
void cal(int a1[][5], int a2[][5]) {
int c[5][5] = {0};
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
for (k = 0; k < n; k++) c[i][j] += a1[i][k] * a2[k][j];
for (i = 0; i < n; i++)
for (j = 0; j < n; j++) a1[i][j] = c[i][j] % 1000;
}
int main() {
int a[5][5], aa[5][5] = {0};
scanf("%d %lld", &n, &b);
for (i = 0; i < n; aa[i][i] = 1, i++)
for (j = 0; j < n && scanf("%d", &a[i][j]); j++);
while (b) b % 2 ? (cal(aa, a), b--) : (cal(a, a), b /= 2);
for (i = 0; i < n; printf("\n"), i++)
for (j = 0; j < n; j++) printf("%d ", aa[i][j] % 1000);
}
반응형
'Algorithm' 카테고리의 다른 글
백준 17609 : 회문 (0) | 2021.11.11 |
---|---|
백준 13459 : 구슬 탈출 (0) | 2021.11.11 |
백준 6137 : 문자열 생성 (0) | 2021.11.11 |
백준 15501 : 부당한 퍼즐 (0) | 2021.11.11 |
백준 1713 : 후보 추천하기 (0) | 2021.11.11 |