数学知识的应用(模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) {
int a[]={2,5,12,14};
f(a);
}
}
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮