数学知识的应用(模m运算)

2019-04-13 11:50发布

题目: 有3堆硬币,分别是3,4,5 二人轮流取硬币。 每人每次只能从某一堆上取任意数量。 不能弃权。 取到最后一枚硬币的为赢家。 求先取硬币一方有无必胜的招法。 代码如下: package sf_03; public class Main { /** * 模m运算 * 尼姆堆--博弈论。 * * 思路:如果和为零,无论怎么拿,都不会等于0. * 如果非零,总有办法等于0. * * 1 1 * 1 0 0 * 1 0 1 * — —— —— * 0 1 0 */ public static void f(int a[]){ int sum=0; for(int i=0;iif(sum==0){ System.out.print("输"); return; } for(int i=0;iint x=sum^a[i]; if(a[i]>x){ System.out.println(a[i]+"--->"+x); } } } public static void main(String[] args) { // TODO Auto-generated method stu int a[]={2,5,12,14}; f(a); } } 这里写图片描述