import java.util.Scanner;
/**
*
* 高僧斗法
*
* 解题思路: 可以转化为 Nim 游戏的方法。
*
*
* 测试数据:
* 1 5 8 19 22 34 56 78 100
* 34 51
* 56 75
*
*
* 1 2 0 4 0
* 1 3 6 7 12 13
* 0 1 2 3
*
*/
public class Asist
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String []ss = sc.nextLine().split(" ");
int a[] = new int [ss.length];
for (int i = 0; i < a.length; i++) a[i] = Integer.parseInt(ss[i]);
// 临时数组——和尚之间的格数
int b[] = new int [a.length];
int b1 = 0;
for (int i = 1; i < a.length; i++)
{
b[b1++] = a[i] - a[i-1] - 1;
}
// 转化为Nim求解
int sum = 0;
for (int i = 0; i <= b1; i+=2)
{
sum ^= b[i];
}
if (sum == 0) System.out.println("-1");
else
{
// 所有和尚的移动,暴力破解
for (int i = 0; i < a.length; i++)
{
for (int j = 1; j <= b[i]; j++)
{
b[i]-=j;
if (i!=0) b[i-1] += j;
sum = b[0];
for (int k = 2; k <= b1; k+=2 )
{
sum ^= b[k];
}
if (sum == 0)
{
System.out.println(a[i]+ " " + (a[i]+j));
break;
}
// 回溯
b[i] += j;
if (i!=0) b[i-1] -= j;
}
}
}
}
}原文地址:http://blog.csdn.net/first_sight/article/details/45499931