Logo
(追記) (追記ここまで)

35066번 - 과제 해결하기 2 인터랙티브

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB307777.778%

문제

이 문제는 인터랙티브 문제입니다.

경기과학고등학교 정수론 수업에서는 학생들의 실력을 평가하기 위한 수행평가를 진행한다. 수행평가 문제의 내용은 다음과 같다.

선생님은 1ドル \le N \le 10^{12}$ 범위의 정수 $N$ 하나를 미리 정해 두었다. 학생들은 제한된 형태의 질문을 통해 $N$을 알아낸 뒤 정답을 제출해야 한다. 선생님은 학생들이 정수론 개념을 제대로 이해했는지 확인하기 위해, 정수 $N$에 대해 할 수 있는 질문과 답안 제출 형식을 다음과 같이 제한하였다.

  • ? $m$ $r$: $N$의 양의 약수들 중 $m$으로 나눈 나머지가 $r$인 것의 개수를 질문한다.
  • ! $N$: $N$을 정답으로 제출한다.

각 학생의 질문 횟수는 최대 300ドル$번으로 제한되어 있으며, 정답은 한 번 제출하면 수정할 수 없다.

정수론을 수강하는 경곽이는 여러 전략을 구상했지만, 주어진 질문 횟수 안에 $N$을 찾아내는 방법을 알아내지 못하였다. 어느덧 제출 기한이 코앞까지 다가온 경곽이는 수행평가를 무사히 완료하기 위해 여러분에게 도움을 요청하였다. 경곽이가 수행평가를 제시간 안에 제출할 수 있도록 도와주자.

입력

출력

제한

인터랙션

여러분은 아래의 질문을 최대 300ドル$번 할 수 있다.

  • ? $m$ $r$: $N$의 양의 약수 중 $m$으로 나눈 나머지가 $r$인 것의 개수를 물어본다. 2ドル \leq m \leq 10^{18}$ 및 0ドル \leq r < m$을 만족해야 하며, 만족하지 않을 경우 를 받는다.

만약, 충분한 질문을 통해서 선생님이 정한 정수 $N$을 찾았다면, 아래와 같이 정답을 제출할 수 있다.

  • ! $N$

각 출력 후에는 표준 출력 버퍼를 비워야 한다. 정답을 말한 후에는 추가적인 출력 없이 프로그램을 종료해야 한다. 위의 조건을 만족하지 않는 비정상적인 출력으로 질문할 경우, 잘못된 입력을 주거나, 혹은 등 의도되지 않은 결과가 나올 수 있음에 유의하라.

그레이더는 비적응적이다. 즉, 초기에 그레이더는 $N$을 하나 정해 두고 사용자가 질문할 때 맨 처음에 정한 $N$에 따라 답변한다.

예제 입력 1

4
2
1
1
​

예제 출력 1

? 3 0
? 5 1
? 8 2
? 18 0
! 18

선생님이 정한 $N$의 값은 18ドル$이었다. 18ドル$의 양의 약수는 1,ドル ,円 2, ,円 3, ,円 6, ,円 9, ,円 18$이므로, 양의 약수 중

  • 3ドル$으로 나눈 나머지가 0ドル$인 것은 3,ドル ,円 6, ,円 9, ,円 18$로 개수는 4ドル$개
  • 5ドル$로 나눈 나머지가 1ドル$인 것은 1,ドル ,円 6$으로 개수는 2ドル$개
  • 8ドル$로 나눈 나머지가 2ドル$인 것은 2ドル$로 개수는 1ドル$개
  • 18ドル$로 나눈 나머지가 0ドル$인 것은 18ドル$로 개수는 1ドル$개

이다. 충분한 질문 후에 답인 18ドル$을 찾았다면, ! 18을 출력한 후, 추가적인 출력 없이 프로그램을 종료하면 된다.

예제는 입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 줄 간격을 조절한 것이며, 실제 입출력과 다른 것에 유의하라.

노트

언어별로 표준 출력 버퍼를 비우는 방법은 다음과 같다.

  • C: fflush(stdout)
  • C++: std::cout << std::flush
  • Java: System.out.flush()
  • Python: sys.stdout.flush()

출처

School > 경기과학고등학교 > 나는코더다 송년대회 > 나는코더다 2025 송년대회 K번

채점 및 기타 정보

  • 예제는 채점하지 않는다.
(追記) (追記ここまで)

출처

대학교 대회

  • 사업자 등록 번호: 541-88-00682
  • 대표자명: 최백준
  • 주소: 서울시 서초구 서초대로74길 29 서초파라곤 412호
  • 전화번호: 02-521-0487 (이메일로 연락 주세요)
  • 이메일: contacts@startlink.io
  • 통신판매신고번호: 제 2017-서울서초-2193 호

AltStyle によって変換されたページ (->オリジナル) /