巴什博奕类型取石子
2016-07-10 08:23
197 查看
只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
如果n=m+1,那么无论先手拿走多少个,后手都可以把石子全部拿完,n又可以用一个公式表示:n=(m+1)*k+T,T<=m
若 T=0,则 n 刚好是
m+1 的整数倍,则无论先手每次拿多少个都会剩余a*(m+1)+(m+1-X)
【X为拿走的个数,a为正整数】,因为m+1-X 必大于0小于m,则先手必输。
若 T≠0,则先手先拿走 T 个,后手拿走 X (X<=m)个,先手再拿走m+1-X个 ,按这种方式依次去拿,最后后手拿完后刚好剩余m+1-X,即后手必输
#include<stdio.h>
int main()
{
int a,n,m,i;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d%d",&n,&m);
if(n%(m+1)==0)
printf("Lose\n");
else
printf("Win\n");
}
return 0;
}
如果n=m+1,那么无论先手拿走多少个,后手都可以把石子全部拿完,n又可以用一个公式表示:n=(m+1)*k+T,T<=m
若 T=0,则 n 刚好是
m+1 的整数倍,则无论先手每次拿多少个都会剩余a*(m+1)+(m+1-X)
【X为拿走的个数,a为正整数】,因为m+1-X 必大于0小于m,则先手必输。
若 T≠0,则先手先拿走 T 个,后手拿走 X (X<=m)个,先手再拿走m+1-X个 ,按这种方式依次去拿,最后后手拿完后刚好剩余m+1-X,即后手必输
#include<stdio.h>
int main()
{
int a,n,m,i;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d%d",&n,&m);
if(n%(m+1)==0)
printf("Lose\n");
else
printf("Win\n");
}
return 0;
}
相关文章推荐
- Android Native 绘图方法
- C#中struct和class的区别详解
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- 深入了解PHP类Class的概念
- jquery 表单验证之通过 class验证表单不为空
- setAttribute 与 class冲突解决
- JavaScript通过HTML的class来获取HTML元素的方法总结
- JavaScript中的类(Class)详细介绍
- javascript面向对象包装类Class封装类库剖析
- jQuery针对input的class属性写了多个值情况下的选择方法
- 详解js中class的多种函数封装方法
- jQuery使用hide方法隐藏指定元素class样式用法实例
- jQuery给多个不同元素添加class样式的方法
- jQuery点击改变class并toggle及toggleClass()方法定义用法
- jquery采用oop模式class类的使用示例
- jquery点击改变class并toggle的实现代码
- JavaScript更改class和id的方法
- 一篇入门的php Class 文章
- 深入C++中struct与class的区别分析