取石子游戏_hdu_2516(博弈规律).java

2014-11-24 08:39:15 · 作者: · 浏览: 0
博弈
取石子游戏
Time Limit: 2000/1000 MS ( Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2228 Accepted Submission(s): 1277
Problem Description
1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win".
Input
输入有多组.每组第1行是2<=n<2^31. n=0退出.
Output
先取者负输出"Second win". 先取者胜输出"First win".
参看Sample Output.
Sample Input
2
13
10000
0
Sample Output
Second win
Second win
First win
Source
ECJTU 2008 Autumn Contest
Recommend
lcy | We have carefully selected several similar problems for you: 2509 2512 1536 1907 1524
import java.io.InputStreamReader;  
import java.util.Scanner;  
  
public class Main{  
    public static void main(String[] args) {  
        Scanner input=new Scanner(new InputStreamReader(System.in));  
        int n;  
        while((n=input.nextInt())!=0){  
            if(n<4){  
                System.out.println("Second win");  
                continue;  
            }  
            long a=2;  
            long b=3;  
            long c=0;  
            for(int i=1;;i++){  
                c=a+b;  
                a=b;  
                b=c;  
                if(c>=n)  
                    break;  
            }  
            if(c==n){  
                System.out.println("Second win");  
            }  
            else  
                System.out.println("First win");  
        }  
    }  
}