아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

선형적으로 생각할 수만 있다면...

시간 제한1초메모리 제한128 MB

요약
행렬 M과 출력 벡터 y가 주어질 때 Mx=y를 만족하는 입력 벡터의 0이 아닌 세 항목을 찾습니다.
난이도

보통10점 중 6점

유형
행렬, 완전 탐색
정답자
아직 제출이 없습니다

문제

알고리즘을 오래 붙잡아 본 사람이라면 안다. 입력 벡터 xx와 출력 벡터 yy를 가진 선형 시스템은 행렬 MM 하나로 나타낼 수 있다. MM의 jj번째 열에는 jj번 입력만 1이고 나머지 입력이 모두 0일 때 나오는 출력값이 들어 있다. 시스템이 선형이므로 임의의 입력 조합에 대한 출력은 MM의 열을 선형결합해서 얻는다.

y=Mxy = Mx

행렬 MM과 출력 벡터 yy가 주어진다. 이 출력을 만들어내는 입력 xx를 구하라. MM은 m×nm \times n 행렬, yy는 크기가 mm인 열벡터이고, 구해야 하는 xx는 크기가 nn인 열벡터로 0이 아닌 성분이 정확히 세 개다. m=3m = 3, n=4n = 4인 경우를 풀어 쓰면 다음 식을 만족하는 xx를 찾는 문제다.

[y1y2y3]=[m11m12m13m14m21m22m23m24m31m32m33m34][x1x2x3x4]\begin{bmatrix} y_1 \\ y_2 \\ y_3 \end{bmatrix} = \begin{bmatrix} m_{11} & m_{12} & m_{13} & m_{14} \\ m_{21} & m_{22} & m_{23} & m_{24} \\ m_{31} & m_{32} & m_{33} & m_{34} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \\ x_4 \end{bmatrix}

입력의 개수 nn이 출력의 개수 mm보다 큰 경우도 다뤄야 한다. 이때 MM은 미결정 시스템이라 같은 yy를 만드는 xx가 여럿 존재하지만, 0이 아닌 성분이 정확히 세 개인 xx는 하나뿐이다.

입력

첫째 줄에 행렬 MM의 행 개수 mm이, 둘째 줄에 열 개수 nn이 주어진다. 이어지는 mm개의 줄에는 MM의 각 행이 공백으로 구분된 실수 nn개로 주어진다. 그다음 mm개의 줄에는 출력 벡터 yy의 성분이 한 줄에 하나씩 주어진다.

3≤m≤303 \le m \le 30, 3≤n≤303 \le n \le 30이고, 조건을 만족하는 xx는 항상 유일하게 존재한다. 입력 하나에는 테스트 케이스가 하나만 들어 있다.

출력

0이 아닌 세 성분의 번호를 오름차순으로, 한 줄에 하나씩 다음 형식으로 출력한다.

input i = v

ii는 1 이상 nn 이하의 정수이고, vv는 그 입력의 값을 소수점 아래 셋째 자리에서 반올림해 소수점 아래 둘째 자리까지 적은 값이다. 반올림 방향이 흔들릴 만큼 경계에 가까운 값은 정답에 나오지 않는다.

힌트

정답 xx를 MM에 곱하면 yy의 각 성분이 상대오차 0.01% 안에서 복원된다. 0이 아닌 성분의 위치로 가능한 후보는 (n3)\binom{n}{3}가지뿐이므로, 후보마다 그 세 열로 최소제곱해를 구한 다음 잔차가 0에 가까운 후보를 고르면 된다. 세 번호는 정답과 정확히 일치해야 한다.

예제1

  1. 예제 1

    입력
    5
    8
    0.484734 -0.147660 -0.224671 -0.060712 -0.324758 0.209435 -0.461233 -0.402469
    -0.215098 0.008685 -0.254425 0.423113 -0.033949 0.003395 0.126518 -0.099603
    0.048778 0.156349 0.228357 0.068926 0.418765 -0.480551 -0.026597 -0.202028
    -0.317657 -0.181216 -0.043709 -0.207515 0.396223 0.028521 -0.091552 0.419526
    -0.000758 0.163841 0.294449 -0.223812 -0.456281 0.239201 0.452864 0.284574
    0.034654
    -2.504212
    -4.200988
    3.153023
    3.517523
    
    예상 출력
    input 1 = -4.04
    input 4 = -8.03
    input 6 = 7.18