1072 威佐夫游戏+1069Nim游戏

有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。

例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。

 收起

输入

第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)
第2 - T + 1行:每行2个数分别是2堆石子的数量,中间用空格分隔。(1 <= N <= 2000000)

输出

共T行,如果A获胜输出A,如果B获胜输出B。

输入样例

3
3 5
3 4
1 9

输出样例

B
A
A
//package p0208;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int T;
		T=sc.nextInt();
		int m,n;
		while(T--!=0)
		{
		m=sc.nextInt();
		n=sc.nextInt();
		if(m>n)
		{
			int t=n;
			n=m;
			m=t;
		}
		int k=(int)((n-m)*(Math.sqrt(5)+1)/2);
		if(k==m) System.out.println("B");
		else
		{
			System.out.println("A");
		}
		}
		sc.close();
	}

}

 

1069 Nim游戏

  1. 1.0 秒
  2.  
  3. 131,072.0 KB
  4.  
  5. 0 分
  6.  
  7. 基础题

有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。

例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。

 收起

输入

第1行:一个数N,表示有N堆石子。(1 <= N <= 1000)
第2 - N + 1行:N堆石子的数量。(1 <= A[i] <= 10^9)

输出

如果A获胜输出A,如果B获胜输出B。

输入样例

3
1
1
1

输出样例

A
//package p0208;
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int sum=0;
		int w=0;
		while(n--!=0)
		{
			w=sc.nextInt();
			sum^=w;
		}
		if(sum==0)
		{
			System.out.println("B");
		}
		else
		{
			System.out.println("A");
		}
	}
}

 

你可能感兴趣的:(java基础)