当前位置: 首页 > news >正文

盒子游戏(湖南省第七届大学生计算机程序设计竞赛)

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30744#problem/E
盒子游戏
Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u
Submit  Status

Description

有两个相同的盒子,其中一个装了n个球,另一个装了一个球。Alice和Bob发明了一个游戏,规则如下:Alice和Bob轮流操作,Alice先操作每次操作时,游戏者先看看哪个盒子里的球的数目比较少,然后清空这个盒子(盒子里的球直接扔掉),然后把另一个盒子里的球拿一些到这个盒子中,使得两个盒子都至少有一个球。如果一个游戏者无法进行操作,他(她)就输了。下图是一个典型的游戏: 
面对两个各装一个球的盒子,Bob无法继续操作,因此Alice获胜。你的任务是找出谁会获胜。假定两人都很聪明,总是采取最优策略。

Input

输入最多包含300组测试数据。每组数据仅一行,包含一个整数n(2<=n<=10^9)。输入结束标志为n=0。

Output

对于每组数据,输出胜者的名字。

Sample Input

2 
3 
4 
0

Sample Output

Alice 
Bob 
Alice


博弈论,核心思路就是本人操作后,留下的大数不能是偶数。
如果大数是偶数,则可以平分,后面的人则无法操作了(要舍弃小得数,现在两数相同,则无法舍弃),即赢了。
也就是说当前大的数为奇数,则肯定可以分为一个奇数,一个偶数,如果分出来的数是偶数大,则接下来的人舍弃奇数,然后把偶数平分后则就赢了。
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int fun(int n)
{
    if(n==1)
    {
        return 0;
    }
    if(n%2!=0)
    {
        return fun(n/2);
    }
    return n/2;
}
int main()
{
    int n;
    while(true)
    {
        scanf("%d",&n);
        if(n==0)
        {
            break;
        }
        if(fun(n))
        {
            printf("Alice\n");
        }
        else
        {
            printf("Bob\n");
        }
    }
    return 0;
}


 

 

转载于:https://www.cnblogs.com/james1207/p/3304061.html

相关文章:

  • cout设置16进制大写输出
  • Exchange2010 SP1配置证书
  • RPC、RMI、HTTP、REST的区别
  • apache日志轮询技术(cronolog and rotatelogs)小结
  • Lambda表达式和匿名方法中不支持yield return
  • 通过HTML调用C# [架构]
  • 创建dynamics CRM client-side (五) - 使用regular expression (正则表达式)来检查phone number...
  • C# 中 LISTVIEW用法
  • 【基本数据结构】并查集-C++
  • 如何将数据库从SQL Server迁移到MySQL
  • 回溯算法
  • JS 弹出窗口(DZ论坛)
  • Linux 用epoll实现的简单http服务器
  • Oracle 10g在RHEL6上的另类安装方法
  • 易经读书笔记14火天大有
  • 【Linux系统编程】快速查找errno错误码信息
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 2017-08-04 前端日报
  • AngularJS指令开发(1)——参数详解
  • Consul Config 使用Git做版本控制的实现
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • CSS实用技巧干货
  • java2019面试题北京
  • JavaScript中的对象个人分享
  • Laravel核心解读--Facades
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Vue 重置组件到初始状态
  • 番外篇1:在Windows环境下安装JDK
  • 机器学习学习笔记一
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 码农张的Bug人生 - 见面之礼
  • 如何在GitHub上创建个人博客
  • 通过npm或yarn自动生成vue组件
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 物联网链路协议
  • 栈实现走出迷宫(C++)
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #微信小程序:微信小程序常见的配置传值
  • (07)Hive——窗口函数详解
  • (1)常见O(n^2)排序算法解析
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)c52学习之旅-简单了解单片机
  • (十一)c52学习之旅-动态数码管
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)SpringBoot3---尚硅谷总结
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 4.0发布后不能正常显示图片问题
  • .Net 知识杂记
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .Net6使用WebSocket与前端进行通信
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • /etc/sudoers (root权限管理)