首页 > 其他分享 >【P3150 pb的游戏(1)】

【P3150 pb的游戏(1)】

时间:2024-07-26 15:28:34浏览次数:19  
标签:偶数 P3150 游戏 奇数 wins 分割 pb zs

pb的游戏(1)

题目背景

有一天 pb 和 zs 玩游戏 你需要帮 zs 求出每局的胜败情况。

题目描述

游戏规则是这样的:

  • 先手对给出的数进行分割,分割成两个正整数,之后接着后手选择留下两个数中的其中一个。两人轮流操作,直到一方无法操作,另一方胜利。

现在要你求出 N N N 次游戏的胜败。

我们认为双方绝顶聪明。每局由 pb 先进行分割。如果 pb 存在必胜策略,输出 pb wins;否则输出 zs wins

输入格式

第一行一个数 N N N,表示数据组数。

之后 N N N 行,每行一个数 M M M,表示每局初始的数。

输出格式

共 N N N 行,每行一串字符,表示游戏结果。

样例 #1

样例输入 #1

5
1
3
7
20
5

样例输出 #1

zs wins
zs wins
zs wins
pb wins
zs wins

提示

对于全部数据, 1 < N < 50 1<N<50 1<N<50, 1 ≤ M ≤ 1 0 9 1\le M\le 10^9 1≤M≤109。

题目分析

在这个游戏中,玩家 pbzs 轮流进行操作。pb 先将数 M 分割成两个正整数,然后 zs 选择其中一个数字,pb 再分割选中的数字,zs 选择,直到某一方无法操作。这时,无法操作的一方输掉游戏。

胜负判断

通过分析游戏规则,对于每个数字 M,需要判断是否 pb 有必胜策略。

  1. 奇数与偶数:

    • 如果 M 是一个奇数,那么 pb 能将其分割成两个数,其中至少有一个数是偶数。然后 zs 选择的数字会使得下一个局面为偶数。
    • 如果 M 是一个偶数,则可以通过选择将其分割为两个奇数。
  2. 简化问题:

    • 从示例可以看出,数的奇偶性决定了游戏的胜负。实际的游戏结果可以通过观察 M 是奇数还是偶数来确定:
      • 如果 M 是偶数,则 pb 可以将其分割成两个数(至少一个数为偶数),使得 zs 选择时总能让剩下的数为奇数或有利于 pb
      • 如果 M 是奇数,则 pb 无法避免将数分割为两个奇数,zs 将有机会选择数字,使得最终的局面不利于 pb

总结

  • 对于每个输入数 M:
    • 如果 M 是偶数,pb 总能有必胜策略。
    • 如果 M 是奇数,zs 总能有必胜策略。

C++ 代码实现

#include <iostream>
using namespace std;

int main() {
    int N;
    cin >> N;
    
    while (N--) {
        long long M;
        cin >> M;
        
        if (M % 2 == 0) {
            cout << "pb wins" << endl;
        } else {
            cout << "zs wins" << endl;
        }
    }
    
    return 0;
}

代码说明

  1. 输入处理: 读取 N(数据组数),然后逐行读取每个 M
  2. 判断游戏结果:
    • 使用模运算 (M % 2) 判断 M 是偶数还是奇数。
    • 输出对应的结果 "pb wins""zs wins"

复杂度分析

  • 时间复杂度: (O(N)),因为每个 M 的判断是常数时间操作。
  • 空间复杂度: (O(1)),除了输入数据外,没有额外的空间开销。

总结

只要保证自己拿到的是偶数,给对面拆成奇数,对面只能拆成一个奇数、一个偶数;循环往复,一定能保证自己拆到2,对面只能拆1(拆不了)。

标签:偶数,P3150,游戏,奇数,wins,分割,pb,zs
From: https://blog.csdn.net/qq_66726657/article/details/140716575

相关文章

  • 可以捕捉高动态范围成像的的AR0521SR2C09SURA0-DP2、AR0522SRSM09SURA0-DP2、AR0821CS
    AR0521SR2C09SURA0-DP2、AR0522SRSM09SURA0-DP2、AR0821CSSC18SMEA0-DPBR图像传感器——明佳达1、AR0521SR2C09SURA0-DP2是一款1/2.5英寸CMOS数字图像传感器,带有2592(H)×1944(V)有效像素阵列。它能在线性或高动态范围模式下捕捉图像,且带有卷帘快门读取,其中包含了复杂......
  • Python从零开始制做文字游戏(荒岛求生)
    文章目录前言开发游戏《荒岛求生》游戏大纲背景内容通关条件游戏过程探索荒岛购买物资休息总结代码开发定义变量当前代码引入背景故事当前代码循环问题解决:函数当前代码制作延时当前代码制作a函数(探索荒岛阶段)展示数......
  • 网站源码装饰公司pbootcms模板网页设计主题
    装饰公司的网站设计分享我很高兴向大家介绍我刚刚制作的装饰公司的网站设计。友好的站点界面,是打动访客的第一步。装饰公司网站的主题网站设计通常需要考虑多个方面,以确保网站能够有效地展示公司形象、吸引潜在客户并提升业务。以下是对装饰公司网站主题设计的详细介绍:一、......
  • steam休闲游戏推荐:《Mimpi Dreams》《Pizza Possum》《洞窟物语》
    对于想要放松娱乐的时刻,Steam平台上有一些非常受欢迎的休闲游戏,这里推荐三款:1、《Mimpi Dreams》《Mimpi Dreams》中文名为《米皮大冒险:梦境》,是一款由 Silicon Jelly 开发的冒险解谜游戏。该游戏的故事承接前作,小狗米皮在成功找到主人并一同回家后,某天夜晚受到梦魇的......
  • OSError:SavedModel 文件不存在于:cnnCat2.h5\{saved_model.pbtxt|saved_model.pb}
    SublimeText项目结构错误显示2021-06-1511:48:41.978235:Wtensorflow/stream_executor/platform/default/dso_loader.cc:64]Couldnotloaddynamiclibrary'cudart64_110.dll';dlerror:cudart64_110.dllnotfound2021-06-1511:48:41.978656:......
  • 利用Java Swing实现在线游戏盒子:连连看游戏
    盒子实现游戏......
  • 盖世计划-0724-B班模拟 C. 游戏 (game)
    首先,Alice先去\(n\)个商店中购买物品。其中第\(i\)个商店售卖编号为\(i\)的物品,且每个物品的售价为\(a_i\)。Alice的总花费不能超过\(k\)。接着,Bob再去另外\(m\)个商店中购买物品。其中第\(i\)个商店售卖编号为\(n+i\)的物品,且每个物品的售价为\(1\)。Bob的......
  • 《Apex英雄》提示缺少mileswin64.dll文件怎么处理?EA平台启动游戏找不到mileswin64.dll
    当EA平台启动游戏时提示找不到mileswin64.dll文件,您可以尝试以下解决方法。首先,重新安装游戏以确保相关文件完整。其次,检查系统是否存在病毒或恶意软件并进行清理。还可以更新驱动程序和系统组件。本篇将为大家带来EA平台启动游戏找不到mileswin64.dll文件解决方法的内容,感兴趣......
  • 彩虹六号:围攻启动游戏缺失vulkan-1.dll文件怎么处理?《彩虹六号:围攻》找不到vulkan-1
    在玩《彩虹六号:围攻》时,如果提示找不到vulkan-1.dll文件,别着急。您可以通过重新安装游戏来解决。或者检查系统是否缺少相关组件并进行安装。也可以更新显卡驱动,修复可能存在的文件缺失或损坏问题。本篇将为大家带来《彩虹六号:围攻》找不到vulkan-1.dll文件修复方法的内容,感兴......
  • 经典手机单机游戏:艾诺迪亚4,一款童年回忆的安卓游戏
    艾诺迪亚4是一款可玩性非常高的角色扮演RPG类手游,该游戏是《艾诺迪亚》系列的第四部作品,所以在本作中它不仅沿袭了系列最为核心的玩法元素,而且它还在其基础上进行了整体的优化和创新,因此它在拥有着精致细腻画面场景的同时,还有着系列游戏所不具备的精彩剧情!另外,该游戏的背景是发......