ピーナッツ(一)

1229 ワード

説明
トムとジェリーは隣人で、ピーナッツが好きです.トムの信条は「ルールは常に強者が制定し、弱者は守る権利しかない」.Jerryは「頭は拳より力がある」と信じている.それ以外に、彼らはすべてとても聡明で、うん、少なくとも211工程大学の本科生のレベルがあります.メーデーの連休初日、トムとJerryは倉庫を散歩している間にピーナッツの山を見つけた(n粒で、nはゼロより1000以下).トムはピーナッツを分けて以下の規則を制定した:1、トムとJerryは交代で山の中からk粒のピーナッツを取り出して食べ、kはゼロより10より大きい.2、ルールの公平性を表示するために、Jerryは先取りまたは後取りを選択することができる.「最後のピーナッツは苦い」という定理に基づいて、Jerryは最後のピーナッツがトムに食べられることを望んでいる.Jerryは目的を達成するために先に取るべきか後に取るべきかを計算し、先に取るなら初めて何粒取るべきかを計算してください.
入力
本題には複数の測定例があり、各測定例の入力は整数nであり、ピーナッツの数を表す.n=0は入力が終了したことを示し,処理は不要である.
しゅつりょく
各測定例は単独の1行に整数を出力し、Jerryはまずピーナッツの粒数を取った.Jerryがトムを先に取ることを決めたら、0を出力します.
入力サンプル



0
出力サンプル


2
解決:
この問題の解決策は,Tom先選=0,jerry選の最後の一粒がTomを満たすものであれば多くある.
次は私のアルゴリズムです.
#include 
#include 
#include 
using namespace std;

int getk(int n);
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF)
	{  if(n==0) break;
	   int k=getk(n);
	   printf("%d
",k); } return 0; } int getk(int n){ int k,j; for(j=2;j<1000;j=j+2) { for(k=1;k<=10;k++) { if(n==1) return 0; if(k*j>=n) return k; } } }