문제 보고서에 GDUT_ 겨울 훈련 솔루션 _ 문제 보고서 주제 I_H 개인 문제 솔루션

문제 보고서에 GDUT_ 겨울 훈련 솔루션 _ 문제 보고서 주제 I_H 개인 문제 솔루션

주제 :

OBS :이 상호 작용하는 문제입니다. 자세한 정보는 "상호 작용"섹션을 받고있다.

MaratonIME 다른 그룹 연습을 시작하는 모임입니다. 이번에는 렌조은 문제를 해결하기로 사탕 학생들을 보상하기로 결정했다. 그들이 호기심, MaratonIME의 회원 렌조 가져올했다 얼마나 많은 사탕 추측하기 시작했다. 각 질문에 대한 렌조 사탕의 양이 높았다 경우 낮추거나 요청 수와 같은 대답했다.

Breno는 사탕의 양이 매우 높을 수 있다는 것을 알았어, 연습이 가능한 한 빨리 시작하는 것, (50)에이 방법을 쿼리의 수를 제한하기로 결정했다.

렌조 적어도 1, 더 이상 109 이상의 사탕을 샀다. 더 이상 50 개 질문 렌조에 의해 구입 얼마나 많은 사탕 찾을 수 있습니다.

입력

모든 질문은 질문의 경우, 문자를 읽습니다. 렌조의 사탕의 양이 생각보다 높은 경우 그것은 '>'될 것 "<"렌조의 사탕의 양이 생각보다 낮거나 경우 "="당신의 추측 렌조의 사탕의 양이 동일한 경우.

산출

당신은 질문을 인쇄 한 후 ≤ 109 y는 숫자 추측되는 형식 "Q y를"모든 쿼리를 인쇄하고, 1 ≤ Y해야한다, 당신은 출력을 세척해야합니다. 출력을 세척하는 방법의 예는 "상호 작용"섹션을 확인하십시오.

상호 작용

위의 형식으로 쿼리를 인쇄, 렌조에게 질문을합니다. 질문을 인쇄 한 후 출력을 세척해야합니다. 각 언어에 대한 아래의 예를 참조하십시오 :

C : FFLUSH (표준 출력)

C ++ : cout.flush ()

자바 : System.out.flush ()

파이썬 : sys.stdout.flush ()

파스칼 : 플러시 (출력)

상기 한 바와 같이 각 쿼리 후 문자를 읽어 보시기 바랍니다.

즉시 렌조가 귀하의 질문에 대한 대답으로 "="프로그램을 종료해야합니다. 당신은 더 이상 50 문제 이상 요구한다면, 당신의 대답은 올바른 것으로 간주되지 않습니다.

입력
:>
<
=

산출

Q 1
Q 3
Q 2
참고
예에서, 사탕 수 대답이 가능한 질문 50의 3 점은 "="문자를 수득했다 때문에 올바른 것으로 간주 2이다.

각 질문에 인쇄 한 후 출력을 플러시해야합니다!

이것은 물론, 요구 사항의 절반은 바이너리 코드가 물이다 미만 1E9의 번호를 찾을 수 50 회 조회에서 2 ^ 30 레벨의 번호를 확인 후 사용하는 대화 형 제목입니다

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>

using namespace std;
int main()
{
	int left=1;
	int right=1e9;
	char ch;
	while(right>left)
	{
		printf("Q %d\n",left+(right-left)/2);
		cin>>ch;
		if(ch=='=')break;
		if(ch=='>')left=left+(right-left)/2+1;
		else right=left+(right-left)/2;

	}
	printf("Q %d\n",left);
	cin>>ch;
	return 0;

}

나는 그 출력이 유효 플러시 알고하지 않았다,하지만 난의 printf를 살 수있는, cout을 문제가 될 수 있는가?

출시 팔 개 원래 기사 · 원의 칭찬 0 · 조회수 (114)

추천

출처blog.csdn.net/DevourPower/article/details/103963413