숫자 복원

면접 대비

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

요약
a, b, a²b, ab² 중 일부가 0으로 지워진 한 줄이 주어질 때, 원래 네 수를 복원하고 사전순으로 가장 작은 튜플을 출력한다.
난이도

보통10점 중 4점

유형
완전 탐색, 수학, 구현, 정수론
정답자
아직 제출이 없습니다

문제

리에네는 대수 수업에서 두 정수 aa와 bb를 골랐다. 두 수는 0<∣a∣<10000 < |a| < 1000, 0<∣b∣<10000 < |b| < 1000, a≥ba \ge b를 만족한다. 리에네는 한 줄에 네 개의 수를 순서대로 적었다. 먼저 aa와 bb를, 그다음 a2ba^2 b를, 마지막으로 ab2ab^2을 적었다. 계산에는 오류가 없다.

예를 들어 다음은 올바른 (a, b, a2b, ab2)(a,\ b,\ a^2 b,\ ab^2) 값들이다.

aabba2ba^2 bab2ab^2
12228848
-1-1-1-1
9-3-24381

페테르가 이 네 수 중 일부를 지우고 그 자리에 00을 적었다. aa와 bb는 00이 아니므로 네 수 aa, bb, a2ba^2 b, ab2ab^2은 모두 00이 아니다. 따라서 값이 00인 칸은 지워진 칸이다.

훼손되었을 수도 있는 한 줄(네 개의 수)이 주어질 때, 원래의 aa, bb, a2ba^2 b, ab2ab^2을 복원하라. 복원 결과가 여러 개라면 사전순으로 가장 작은 것을 출력한다. 즉 aa가 가장 작은 것을, aa가 같다면 bb가 가장 작은 것을, 그다음 a2ba^2 b, 그다음 ab2ab^2 순서로 작은 것을 고른다. (지워지지 않은 수는 모든 복원에서 동일하므로, 이는 왼쪽에서부터 지워진 수를 차례로 최소화하는 것과 같다.)

입력

한 줄에 네 정수가 공백으로 구분되어 주어진다. 훼손되었을 수도 있는 줄 aa bb a2ba^2 b ab2ab^2이며, 지워진 수는 00으로 표시된다.

출력

복원한 네 정수 aa bb a2ba^2 b ab2ab^2을 한 줄에 공백으로 구분하여 출력한다.

제약

  • 0<∣a∣<10000 < |a| < 1000, 0<∣b∣<10000 < |b| < 1000
  • a≥ba \ge b
  • 입력에는 항상 하나 이상의 유효한 복원이 존재한다.

예제2

  1. 예제 1

    입력
    12 0 288 0
    
    예상 출력
    12 2 288 48
    
  2. 예제 2

    입력
    0 0 0 81
    
    예상 출력
    1 -9 -9 81