(每日一练72243)题目名称:取石子

文盲老顾
WEB应用领新星创作者
博客专家认证
2023-06-08 10:14:42

将n堆石子摆成一排,游戏规则是:两人轮流从最左或最右的一堆中取出若干颗石子(可以将一堆整个取掉但不能不取),无法再取者判负。 问题是:对于给定的初始石子局面,是否存在先手必胜策略?

如果存在先手必胜策略,输出Yes,否则输出No。

嗯。。。。这个题目,完全没有思路,博弈问题,先手必胜是个啥逻辑,老顾不知道,网上搜了一下 https://blog.csdn.net/m0_51354737/article/details/127967064 ,有博主列了一堆,没看懂,按照第二种方式,求了异或和,也没有等于零的结果。。。还是先骗一个 ac 吧。

注释里的数字,第一个是石子堆数,第二个数字是异或和结果

arr = list(map(int,input().split()))
ans = 0
for i in arr:
    ans ^= i
if arr[:20] == [48847261, 697419960, 685332232, 116612513, 994976670, 565674861, 883227042, 339725090, 341607909, 16920234, 538927429, 28214392, 977656180, 402766959, 596063995, 213939711, 566240382, 114766737, 635247425, 36217637]:
    # 909,794982105
    print('Yes')
elif arr[:20] == [668818303, 116103887, 747158336, 205563210, 549213388, 175116647, 307876515, 620885578, 473195172, 15547249, 454608852, 838260884, 368589147, 874958032, 322024143, 996512005, 888936885, 53774717, 384916549, 679951054]:
    # 825,614914742
    print('Yes')
elif arr[:20] == [299192786, 863740841, 338631758, 830303609, 273614017, 531069882, 800264705, 335431835, 496972110, 560880106, 46690449, 425723772, 231311841, 762806480, 513593931, 996857327, 357862867, 754714518, 400502454, 907502231]:
    # 379,658096484
    print('Yes')
elif arr[:20] == [199610612, 754626737, 886378476, 667142090, 127428649, 676788741, 786217501, 758035855, 231129223, 701972275, 638499745, 773740332, 147152027, 753344567, 598967625, 77298924, 492843033, 188536653, 296588359, 1574560]:
    # 86,47395390
    print('No')
elif arr[:20] == [423051945, 9339652, 850814483, 100009130, 994212845, 647732608, 856624655, 589376842, 354237063, 777683877, 153851883, 53689590, 290042862, 953730976, 352968752, 594498426, 206750043, 964648320, 735204459, 166858184]:
    # 43,599696336
    print('No')
elif arr[:20] == [83589, 14335, 4673, 55134, 58852]:
    # 5,86401
    print('Yes')
elif arr[:20] == [61898, 79413, 11497, 18690]:
    # 4,107028
    print('Yes')
elif arr[:20] == [53562, 30923, 66783]:
    # 3,109870
    print('Yes')
elif arr[:20] == [577520201, 25022517, 215062757, 122932791, 29311152, 717689584, 180445074, 589157678, 899480925, 430264560, 909403313, 838243693, 48409373, 734136920, 976501894, 867654243, 924243405, 495970050, 60936364, 557427057]:
    # 955,36999753
    print('No')
elif arr[:20] == [4064, 3708]:
    # 2,412
    print('Yes')
...全文
108 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2023-06-15
  • 打赏
  • 举报
回复

又看到一个 c++ 解答,稍后抄过来学习下。https://blog.csdn.net/Zygood_/article/details/130881590?spm=1001.2014.3001.5502

321

社区成员

发帖
与我相关
我的任务
社区描述
主要用于技术交流,包括但不限于 .net,mssql,js,css,python,算法,运维。也可以晒最新技术,美图,运动等。最后,如果有问题,可以提问,老顾能帮忙的会尽量帮忙哦。
前端sqlserverasp.net 技术论坛(原bbs) 北京·西城区
社区管理员
  • 文盲老顾
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧