私はHジムアンソロジー2019_GDUT_新生児トピックス - 101375H

トピック:

OBS:これは、インタラクティブな問題です。詳細については、下にある
「相互作用」のセクション。

MaratonIMEは、別のグループの練習を開始するために集めています。今回は、レンゾは、彼らが問題を解決するようキャンディーを学生に報いることにしました。彼らがそうであるように好奇心が強い、MaratonIMEのメンバーは、レンゾがもたらすんでしたどのように多くのキャンディーを推測し始めました。それぞれの質問について、レンゾは、キャンディの量が高かった場合、下げるか尋ねた数に等しい答えました。

Brenoは、キャンディの量が非常に高くなる可能性があることに気付か、実際には、できるだけ早く開始すると、50にこの道をクエリの数を制限することを決めました。

レンゾは、少なくとも1とこれ以上の109以上のキャンディーを買いました。50の以下の質問にレンゾによって購入されたどのように多くのキャンディー下さい。

すべての質問への入力は、文字を読んで、尋ねました。レンゾのキャンディーの量は、あなたの推測よりも高い場合には、「<??」、「?>?」になりますあなたの推測は量と等しい場合レンゾのキャンディーの量は、あなたの推測や「?=?」よりも低い場合レンゾのキャンディーの。

出力は、
あなたはフォーマットyは番号が推測される「Q Y」、および1つの≤Y≤10E9ですべてのクエリを印刷する必要があります。質問を印刷した後、あなたは出力をフラッシュする必要があります。出力をフラッシュする方法の例については、「相互作用」の項を確認してください。

相互作用は、レンゾに質問してformataboveにクエリを印刷します。質問を印刷した後、あなたは出力をフラッシュする必要があります。各言語については、以下の例を参照してください。

C:にfflush(STDOUT)

C ++:cout.flush()

Javaの:System.out.flush()

Pythonの:sys.stdout.flush()

パスカル:フラッシュ(出力)

前述したように、各クエリの後、文字を読んで。

「=」プログラムが終了しているとレンゾは、あなたの質問に答えるとすぐに。あなたはせいぜい50個の質問をしていない場合はあなたの答えが正しいとみなされます。

実践:これまでの推測までの半分、0〜L開始は、Rは、現在の小さな場合半ばのR =半ば、または他のL =半ばに、1E9 + 1です。

コード:

#include<cstdio>
#include<iostream>
using namespace std;

int main()
{
	int ans,l,r,t=50;
	char m;
	r=1e9+1;
	l=0;
	while (t--)
	{
		ans=(l+r)/2;
		cout<<"Q "<<ans<<endl;
		cout.flush();
		scanf("%c",&m);
		getchar();
		if(m=='<') r=ans;
		if(m=='>') l=ans;
		if(m=='=') break;
	}
	return 0;	
}
公開された14元の記事 ウォンの賞賛0 ビュー301

おすすめ

転載: blog.csdn.net/qq_39581539/article/details/103964605