摘要: 1 import java.math.*; 2 3 public class Huangjinfenge { 4 5 public static void main(String[] args) { 6 7 BigDecimal a[] = new BigDecimal[2005]; 8 a[0]=BigDecimal.valueOf(1); 9 a[1]=BigDecimal.valueOf(2);10 for(int i=2;i<=2000;i++)11 {12 ... 阅读全文
posted @ 2013-05-25 23:52 萧凡客 阅读(696) 评论(5) 推荐(0) 编辑
摘要: 描述himdd最近很想玩游戏,于是他找到acmj和他一起玩,游戏是这样的:有一堆石子,两个人轮流从其中取走一定的石子,取走最后所有石子的人为赢家,不过得遵循如下规则:1.第一次取不能取完,至少取1颗.2.从第二次开始,每个人取的石子数至少为1,至多为对手刚取的石子数的两倍。himdd事先想知道自己会不会赢,你能帮帮他吗?(每次himdd先手)输入有多组测试数据,每组有一个整数n(2<=n<2^64);输出himdd会赢输出Yes,否则输出No;样例输入256样例输出NoNoYes 1 2 #include<stdio.h> 3 #include<stdlib.h& 阅读全文
posted @ 2013-05-25 10:53 萧凡客 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 描述小王喜欢与同事玩一些小游戏,今天他们选择了玩取石子。游戏规则如下:共有N堆石子,已知每堆中石子的数量,并且规定好每堆石子最多可以取的石子数(最少取1颗)。两个人轮流取子,每次只能选择N堆石子中的一堆,取一定数量的石子(最少取一个),并且取的石子数量不能多于该堆石子规定好的最多取子数,等哪个人无法取子时就表示此人输掉了游戏。假设每次都是小王先取石子,并且游戏双方都绝对聪明,现在给你石子的堆数、每堆石子的数量和每堆石子规定的单次取子上限,请判断出小王能否获胜。输入第一行是一个整数T表示测试数据的组数(T<100)每组测试数据的第一行是一个整数N(1<N<100),表示共有N堆 阅读全文
posted @ 2013-05-25 10:06 萧凡客 阅读(343) 评论(0) 推荐(0) 编辑
摘要: 有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,……,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9,15)、(11,18)、(12,20)。我们可以知道,后面的奇异局势可以通过一轮特殊的取法变为更低的奇异局势!可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k,奇异 阅读全文
posted @ 2013-05-25 09:49 萧凡客 阅读(306) 评论(0) 推荐(0) 编辑