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 * 一个 ...
随机推荐
- quartz2.3.0(八)使用日历排除不应该执行任务的时间段
Job任务类 package org.quartz.examples.example8; import java.util.Date; import org.slf4j.Logger; import ...
- tkinter学习笔记_06
12.弹窗 messagebox import tkinter as tk from tkinter import messagebox root = tk.Tk() root.title(" ...
- win server 检查是否是ntfs文件系统
fsutil fsinfo volumeinfo c: | findstr /i "文件系统名"
- Oracle 11g安装过程工作Oracle数据库安装图解
一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: oracle.com/tec ...
- ABP 基于DDD的.NET开发框架 学习(六)创建新动态Api
我们想要这个服务暴露成一个Web API控制器,以方便客户端调用.ASP.NET Boilerplate能够自动且动态地为这个应用服务创建Web API 控制器,只需要一行配置代码即可完成. Dyna ...
- OO——JML作业总结
目录 第三单元博客作业 JML语言理论基础 1.注释结构 2.JML表达式 3.方法规格 4.类型规格 应用工具链 JMLUnitNG使用实例 作业架构设计 第一次作业 第二次作业 第三次作业 BUG ...
- vue实现滑块滑动校验
为了防止机器操作自动提交,我们需要添加滑动校验. 实现代码如下: 1.子组件slider.vue <template> <div class="drag" r ...
- npm 安装 react-devtools
由于不能科学的上网.网上看资料装上了这个插件,装的过程有点坑.记录一下,希望能帮到和我一样的新手. 1.第一步,克隆下远程仓库的东西. 桌面右键,git-bash.然后输入: git clone ht ...
- UI5-技术篇-签字板
签字板应用是通过创建自定义控件实现的,相关代码如下: 1.HTML <!DOCTYPE HTML> <html> <head> <meta http-equi ...
- adb命令获取app布局文件xml
adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml adb pull /data/local/ ...