一、题目
取球博弈
两个人玩取球的游戏。
一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目。
如果无法继续取球,则游戏结束。
此时,持有奇数个球的一方获胜。
如果两人都是奇数,则为平局。
假设双方都采用最聪明的取法,
第一个取球的人一定能赢吗?
试编程解决这个问题。
输入格式:
第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目 (0<n1,n2,n3<100)
第二行5个正整数x1 x2 ... x5,空格分开,表示5局的初始球数(0<xi<1000)
输出格式:
一行5个字符,空格分开。分别表示每局先取球的人能否获胜。
能获胜则输出+,
次之,如有办法逼平对手,输出0,
无论如何都会输,则输出-
例如,输入:
1 2 3
1 2 3 4 5
程序应该输出:
+ 0 + 0 -
再例如,输入:
1 4 5
10 11 12 13 15
程序应该输出:
0 - 0 + +
再例如,输入:
2 3 5
7 8 9 10 11
程序应该输出:
+ 0 0 0 0
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 3000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
二、EXCEL表格
**** | 180.9 | 88 | 88 | 15919.2 |
**** | 10.25 | 65 | 65 | 666.25 |
**** | 56.14 | 9 | 90 | 5052.6 |
**** | 104.65 | 9 | 90 | 9418.5 |
**** | 100.3 | 88 | 88 | 8826.4 |
**** | 297.15 | 5 | 50 | 14857.5 |
**** | 26.75 | 65 | 65 | 1738.75 |
**** | 130.62 | 5 | 50 | 6531 |
**** | 240.28 | 58 | 58 | 13936.24 |
**** | 270.62 | 8 | 80 | 21649.6 |
**** | 115.87 | 88 | 88 | 10196.56 |
**** | 247.34 | 95 | 95 | 23497.3 |
**** | 73.21 | 9 | 90 | 6588.9 |
**** | 101 | 5 | 50 | 5050 |
**** | 79.54 | 5 | 50 | 3977 |
**** | 278.44 | 7 | 70 | 19490.8 |
**** | 199.26 | 5 | 50 | 9963 |
**** | 12.97 | 9 | 90 | 1167.3 |
**** | 166.3 | 78 | 78 | 12971.4 |
**** | 125.5 | 58 | 58 | 7279 |
**** | 84.98 | 9 | 90 | 7648.2 |
**** | 113.35 | 68 | 68 | 7707.8 |
**** | 166.57 | 5 | 50 | 8328.5 |
**** | 42.56 | 9 | 90 | 3830.4 |
**** | 81.9 | 95 | 95 | 7780.5 |
**** | 131.78 | 8 | 80 | 10542.4 |
**** | 255.89 | 78 | 78 | 19959.42 |
**** | 109.17 | 9 | 90 | 9825.3 |
**** | 146.69 | 68 | 68 | 9974.92 |
**** | 139.33 | 65 | 65 | 9056.45 |
**** | 141.16 | 78 | 78 | 11010.48 |
**** | 154.74 | 8 | 80 | 12379.2 |
**** | 59.42 | 8 | 80 | 4753.6 |
**** | 85.44 | 68 | 68 | 5809.92 |
**** | 293.7 | 88 | 88 | 25845.6 |
**** | 261.79 | 65 | 65 | 17016.35 |
**** | 11.3 | 88 | 88 | 994.4 |
**** | 268.27 | 58 | 58 | 15559.66 |
**** | 128.29 | 88 | 88 | 11289.52 |
**** | 251.03 | 8 | 80 | 20082.4 |
**** | 208.39 | 75 | 75 | 15629.25 |
**** | 128.88 | 75 | 75 | 9666 |
**** | 62.06 | 9 | 90 | 5585.4 |
**** | 225.87 | 75 | 75 | 16940.25 |
**** | 12.89 | 75 | 75 | 966.75 |
**** | 34.28 | 75 | 75 | 2571 |
**** | 62.16 | 58 | 58 | 3605.28 |
**** | 129.12 | 5 | 50 | 6456 |
**** | 218.37 | 5 | 50 | 10918.5 |
**** | 289.69 | 8 | 80 | 23175.2 |
三、反思
1.这种需要简单计算的问题,我们可以使用excel表格,先把前三列的的复制在表格中(这时候都在一个格子中,我们需要对他进行分列),点击最上面的一行的 数据,复制数据点击分列,选中分隔符号,点击下一步,勾选中空格,下一步,下一步完成
2.下一步我们对数据进行操作
ctrl+h:打开查找和替换,半价替换成5,折替换成无
选择C列的第一个格子,在上面输入=C1&REPT("0",2-len(C1))
最后选中E,下面就可以看到总和,在缩小100倍,就是我们的总钱数(因为我们乘的折扣是扩大100的)
金额为 513685.95,最终答案填入5200