Cogs 763. [USACO Open09] 数字的游戏(博弈)
- [USACO Open09] 数字的游戏
★☆ 输入文件:cdgame.in 输出文件:cdgame.out 简单对比
时间限制:1 s 内存限制:128 MB
Bessie正跟FJ玩一个数字游戏,她想让你帮她赢。
游戏的第i局由一个整数N_i(1 <= N_i <= 1,000,000)开始,Bessie先手,接下来两个人交替进行,轮到谁时,她(他)可以在当前整数中挑一个最大的或最小的非零数字,并减去该数字,所得的差成为新的游戏数。比如若当前整数为3014,我们可以从中减去最大数字4或最小非零数字1,得数为3010或3013。每一局游戏以得到数0为结束,而得0的选手为胜利一方。
Bessie与FJ一共要玩G(1 <= G <= 100)局,请确定每局游戏的胜者,假定他们两个都玩得很好(这意味着每轮到一方执手,他都会怎么能赢就怎么做)。
举个例子:起初N_i=13,Bessie先手,她选了数字3,减去后得10,FJ只能选数字1,减去后得9,Bessie选数字9,减去后得到0,Bessie赢。
输入格式:
第1行:一个整数G;
第2~G+1行:第i+1行包含一个整数N_i;
输出格式:
共G行,如果第i局Bessie赢则在第i行输出”YES”,如果Bessie不能赢则第i行的输出为”NO”。
输入输出样例:
cdgame.in
2
9
10
cdgame.out
YES
NO
输出样例解释:
第一局,Bessie只需选9减去即赢;第二局,Bessie只能选1(不能选0),然后FJ选9减去即赢。
/*
博弈.
递推sg函数.
显然1~9都是必胜态.
显然操作后数都会变小.
如果一个状态的后继状态有必败态,
那么它就是必胜态.
否则就是必败态.
*/
#include<iostream>
#include<cstdio>
#define MAXN 1000001
using namespace std;
int n,max1,min1,sg[MAXN];
void pre()
{
for(int i=1;i<=9;i++) sg[i]=1;
for(int i=10;i<=MAXN-1;i++)
{
int x=i;
min1=10,max1=0;
while(x)
{
int xx=x%10;
x/=10;
if(xx) min1=min(xx,min1);
if(xx) max1=max(max1,xx);
}
if(!sg[i-min1]||!sg[i-max1]) sg[i]=1;
else sg[i]=0;
}
}
int main()
{
freopen("cdgame.in","r",stdin);
freopen("cdgame.out","w",stdout);
int x;
pre();scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
if(sg[x]) printf("YES\n");
else printf("NO\n");
}
return 0;
}
Cogs 763. [USACO Open09] 数字的游戏(博弈)的更多相关文章
- Java基础知识强化之IO流笔记70:Properties练习之 如何让猜数字小游戏只能玩5次的案例
1. 使用Properties完成猜数字小游戏只能玩5次的案例: 2. 代码实现: (1)猜数字游戏GuessNumber: package cn.itcast_08; import java.uti ...
- 洛谷P1118 数字三角形游戏
洛谷1118 数字三角形游戏 题目描述 有这么一个游戏: 写出一个1-N的排列a[i],然后每次将相邻两个数相加,构成新的序列,再对新序列进行这样的操作,显然每次构成的序列都比上一次的序列长度少1,直 ...
- java猜数字小游戏
/* * * 猜数字小游戏 * * 先由系统生成一个2-100之间的随机数字, * * 然后捕获用户从控制台中输入的数字是否与系统生成的随机数字相同, * * 如果相同则统计用户所猜的次数,并给出相应 ...
- 简单的C语言猜数字小游戏
猜数字小游戏可谓是C语言最为基础的一个知识点了,我们可以在此基础上进行延伸,实现随机数的猜测,然后是加入再来一局的模式,等等.这里是抛砖引玉,希望你能做出你的经典之作. #include <st ...
- python 游戏(数字推理游戏Bagels)
1.游戏思路和流程图 实现功能:玩家猜测三位不一样的数字,猜错了有提示,提示分别为(位置错误数字正确),(位置和数字正确),(数字和位置都不正确) 游戏流程图 2. 使用模块和游戏提示 import ...
- jquery开发的数字相加游戏(你能玩几分)
jquery开发的数字相加游戏,我在一轮中玩了632分(如下图),你能玩几分,哈哈... 我要试一试 下面贡献下这款“数字相加游戏”的开发过程. html部分: <div class=" ...
- 一款纯css3实现的数字统计游戏
今天给大家分享一款纯css3实现的数字统计游戏.这款游戏的规则的是将所有的数字相加等于72.这款游戏的数字按钮做得很美观,需要的时候可以借用下.一起看下效果图: 在线预览 源码下载 实现的代码. ...
- 洛谷P1132 数字生成游戏
P1132 数字生成游戏 题目描述 小明完成了这样一个数字生成游戏,对于一个不包含0的数字s来说,有以下3种生成新的数的规则: 将s的任意两位对换生成新的数字,例如143可以生成314,413,134 ...
- 【转】Java数字抽奖游戏核心代码
1. [代码][Java]代码 package com.luiszhang.test; import java.util.Arrays; /** * NumberLotteryGame * 一个 ...
随机推荐
- scrapy爬取相似页面及回调爬取问题(以慕课网为例)
以爬取慕课网数据为例 慕课网的数据很简单,就是通过get方式获取的 连接地址为https://www.imooc.com/course/list?page=2 根据page参数来分页
- kafka和zookeeper安装部署(版本弄不好就是坑)
yum install -y unzip zip 配置host vi /etc/host172.19.68.10 zk1 1. zookeeper zookeeper下载地址 http://mirro ...
- ppt thinkcell-Thinkcell: 一款强大的专业图表制作工具
https://jingyan.baidu.com/article/6dad50750e6121a123e36e00.html
- 5_PHP数组_3_数组处理函数及其应用_1_快速创建数组的函数
以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 一.快速创建数组的函数 1. range() 函数 程序: <?php $numbers = range(1 ...
- SocketException: Write failed (OS Error: Broken pipe, errno = 32
https://github.com/flutter/flutter/issues/16491
- Git和GitHub在线学习资源整理
电子书 GotGitHub Git Workflow 沉浸式学习Git 文章 GitHub Fundamental visual-git-guide 图形化的Git参考手册 Linux下使用git命令 ...
- RedisCluster的rename机制失败报错,解决又是数据倾斜问题
需求说明:spring session中的用户session更新是更新key的名字,所以对于key的操作时需要用newkey 替换oldkey value值只允许存在一个,这里用到rename就很合适 ...
- 1-Spark-1-性能调优-数据倾斜1-特征/常见原因/后果/常见调优方案
数据倾斜特征:个别Task处理大部分数据 后果:1.OOM;2.速度变慢,甚至变得慢的不可接受 常见原因: 数据倾斜的定位: 1.WebUI(查看Task运行的数据量的大小). 2.Log,查看log ...
- mybatis返回map类型数据空值字段不显示的解决方法
在日常开发中,查询数据返回类型为map,数据库中有些自动值为null,则返回的结果中没有值为空的字段,则如何显示值为空的字段呢? Spring boot + MyBatis返回map中null值默认不 ...
- 【HCIA Gauss】学习汇总-数据库管理-2
数据库管理目标:稳定 安全 数据一致性 系统高性能 数据库管理员 数据库管理范围 :数据库管理对象1.物理设计工作 2.物理实现工作 对象是指 :数据库里 存储和指向数据的各种概念和结构的总称 对象管 ...