HDU 2149 Public Sale【Nimゲーム】

1950 ワード

Public Sale
Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4529    Accepted Submission(s): 2741
Problem Description
いやだが、現実は結局現実で、Leleは奨学金をもらっていないので退学の運命を逃れなかった.今彼を待っているのは、FarmJohnのような農地生活だ.
畑を作るには田が必要だ.Leleは街で別のオークションが行われていると聞いた.オークションの品物はちょうど20ムーの畑だ.そこで、Leleは彼の貯金を全部持って、オークションに向かった.
その後、オークション全体がLeleと彼の死の向こうYueyueだけであることが分かった.
聞いてみると、Leleはこのオークションのルールがこうであることを知っています.最初は最低価格が0で、二人で交代で値上げを始めましたが、値上げの幅は1~Nの間で、価格が畑のコスト価格M以上になると、主催者はこの畑を今回の値上げ者に売っています.
LeleとYueyueは試験はだめだが、オークションには精通しており、二人ともこの畑を手に入れたいと思っている.だから彼らは毎回自分にとって最も有利な方法を選んで値上げします.
Lele辞書の順番がYueyueより前なので、毎回Leleが先に値上げを始めます.すみません、初めて値上げしたとき、
Leleはどのくらい出して自分がこの土地を買えることを保証することができますか?
 
Input
この問題には複数のテストが含まれています.ファイルの終了(EOF)まで処理してください.各グループのテストは1行を占めます.
各グループのテストは2つの整数MとNを含む(意味は問題の説明を参照して、0 
Output
各グループのデータについて、Leleが初めて加算できる価格を1行ごとに増加順に出力します.2つのデータの間はスペースで区切られています.
Leleが初めていくら値切ってもこの土地が買えない場合は、「none」を出力します.
 
Sample Input

   
   
   
   
4 2 3 2 3 5

 
Sample Output

   
   
   
   
1 none 3 4 5

 /*
 簡単なNimゲーム
*/
#include<cstdio>
int main()
{
	int i,m,n;
	while(scanf("%d %d",&m,&n)!=EOF)
	{
		if(m<=n)
		{
			for(i=m; i<n; i++)
				printf("%d ",i);
			printf("%d
",n); continue; } if(m%(n+1)==0) { printf("none
"); } else { printf("%d
",m%(n+1)); } } return 0; }