만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

평면 위의 직선

시간 제한2초메모리 제한1024 MB

요약
매 턴마다 k0와 b0를 골라 k와 b에 더하고, 근의 개수와 부호를 받아 숨겨진 정수 k와 b를 50턴 안에 찾습니다.
난이도

보통10점 중 5점

유형
이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

몬스터도 공부를 해야 한다. 그래서 드라큘라 백작은 작년에 어린 몬스터들을 위한 학교를 열었다. 이 학교에서는 사회에서의 예절, 사람을 겁주는 방법, 그리고 당연히 수학을 가르친다. 내일 드라큘라는 함수의 그래프, 그중에서도 직선을 다루는 수업을 할 계획이다. 그는 세로로 놓이지 않은 평면 위의 직선은 모두 y=kx+by=kx+b 꼴로 나타낼 수 있다고 설명할 것이다. 하지만 설명만으로는 부족하다고 보고, 수업의 나머지 절반은 학생들이 내용을 더 잘 이해하도록 게임에 쓰기로 했다. 여러 게임 중에서 그는 다음 게임을 골랐다.

작은 몬스터들은 방정식 kx+b=0kx+b=0의 계수가 되는 정수 kk, bb (∣k∣,∣b∣≤1000|k|, |b| \le 1000, k≠0k \neq 0)를 정하지만, 드라큘라에게는 알려주지 않는다. 드라큘라는 이 두 값을 알아맞혀야 한다. 한 턴에 드라큘라는 정수 k0k_0, b0b_0 (∣k0∣,∣b0∣≤5000|k_0|, |b_0| \le 5000)를 종이에 적는다. 그러면 몬스터들은 현재 방정식 kx+b=0kx+b=0의 근이 몇 개인지 알려준다. 근이 정확히 하나이면 그 근의 부호도 알려준다. 이후 현재 kk는 k+k0k+k_0으로, 현재 bb는 b+b0b+b_0으로 바뀐다.

드라큘라는 학생들 앞에서 체면을 잃고 싶지 않아서 여러분에게 곁에서 도와 달라고 부탁한다. 적절한 k0k_0, b0b_0을 고르는 데 여러분이 도와주어야 한다. 50턴 이하로 몬스터들이 정한 계수 kk, bb를 찾도록 도와라.

힌트

프로그램이 올바르게 동작하려면 출력을 할 때마다 아래 명령을 실행해야 한다.

  • Pascal: flush(output);
  • C/C++: fflush(stdout);
  • Java: System.out.flush();
  • Python: sys.stdout.flush();

또한 출력한 줄마다 줄바꿈을 넣는 것도 잊지 말아야 한다.

예제1

  1. 예제 1

    입력
    1 -1
    1 -1
    -1
    
    예상 출력
    0 1 0
    0 -2 -1
    0 0 0
    1 1 1