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