# USACO 2009 Open Silver 3.Cow Digit Game简单博弈论

Description

Bessie is playing a number game against Farmer John, and she wants you to help her achieve victory.

Game i starts with an integer N_i (1 <= N_i <= 1,000,000). Bessie goes first, and then the two players alternate turns. On each turn, a player can subtract either the larges digit or the smallest non-zero digit from the current number to obtain a new number. For example, from 3014 we may subtract either 1 or 4 to obtain either 3013 or 3010, respectively. The game continues until the number becomes 0, at which point the last player to have taken a turn is the winner.

Bessie and FJ play G (1 <= G <= 100) games. Determine, for each game, whether Bessie or FJ will win, assuming that both play perfectly (that is, on each turn, if the current player has a move that will guarantee his or her win, he or she will take it).

Consider a sample game where N_i = 13. Bessie goes first and takes 3, leaving 10. FJ is forced to take 1, leaving 9. Bessie takes the remainder and wins the game.

Input
* Line 1: A single integer: G

* Lines 2..G+1: Line i+1 contains the single integer: N_i

Output
* Lines 1..G: Line i contains "YES" if Bessie can win game i, and "NO" otherwise.

Sample Input
2
9
10
Sample Output
YES
NO

OUTPUT DETAILS:

For the first game, Bessie simply takes the number 9 and wins. For the second game, Bessie must take 1 (since she cannot take 0), and then FJ can win by taking 9.

#include<stdio.h>
int sg[1000010],num[10],len;
int maxi,mini;
int main()
{
sg[0]=0;
int i,t,n;
len=0;
for(i=1;i<=1000000;i++)
{
t=i;
maxi=0;
mini=10;
while(t)
{
if(t%10>maxi)
maxi=t%10;
if(t%10>0&&t%10<mini)
mini=t%10;
t/=10;
}
sg[i]=(sg[i-maxi]&sg[i-mini])^1;
}
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&t);
if(sg[t])
printf("YES\n");
else
printf("NO\n");
}
return 0;
}


• 本文已收录于以下专栏：

## bzoj 3404: [Usaco2009 Open]Cow Digit Game又见数字游戏（SG函数）

3404: [Usaco2009 Open]Cow Digit Game又见数字游戏 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: 181  Solv...
• Jaihk662
• 2017年07月22日 13:08
• 514

## bzoj3404 [Usaco2009 Open]Cow Digit Game又见数字游戏

Description     贝茜和约翰在玩一个数字游戏．贝茜需要你帮助她．     游戏一共进行了G(1≤G≤100)场．第i场游戏开始于一个正整数Ni(l≤Ni≤1,000,000)．游...
• zhb1997
• 2014年09月26日 22:31
• 1092

## bzoj3400[Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

Description     农夫顿因开始玩飞盘之后，约翰也打算让奶牛们享受飞盘的乐趣．他要组建一只奶牛飞盘 队．他的N(1≤N≤2000)只奶牛，每只部有一个飞盘水准指数Ri(1≤Ri≤1...
• zhb1997
• 2014年06月07日 01:24
• 907

## USACO2007 Open Cheappal

USACO 2007Open Cheappal 最优回文
• Kanosword
• 2016年09月13日 14:46
• 396

## 【USACO】2007 Feb Silver Lilypad Pond 白银莲花池

Silver Lilypad Pond 白银莲花池 Description 为了让奶牛们娱乐和锻炼，约翰建造了一个美丽的池塘。这个池塘是矩形的，可以分成 M×N个方格。一些格子是坚固得令人惊讶的莲花，...
• Bobby_Z
• 2016年11月07日 23:59
• 169

## USACO 2008 Open Silver-roads around the farm(水题）

Description Farmer John's cows have taken an interest in exploring the territory around the farm....
• Honeycomb_1
• 2018年02月02日 16:52
• 45

## USACO 2016 US Open【262144游戏】

Description Bessie喜欢在手机上下载游戏玩（……），然而她蹄子太大，很难在小小的手机屏幕上面操作。 她被她最近玩的一款游戏迷住了，游戏一开始有n个正整数，(2 Inp...
• Woodstock_Cyber
• 2016年11月06日 09:00
• 277

## USACO2011Open Silver Running Laps题解

//请忽略我把牛看作羊.... 由题意,我们可以得到 t*vi-t*vj=kC.那么i,j相遇的次数就是最大的k(整数).为了得到最大的k就要使t最大,而tmax=L*C/vmax. 那么 把式子...
• LIN452
• 2016年06月28日 17:07
• 315

## 2017.05.20【usaco2017_Mar Bronze & Silver】C组题解

• enjoy_pascal
• 2017年05月20日 16:51
• 331

## USACO 2018JAN Silver

A.lifeguards（线段树+枚举） 枚举删掉哪条线段，离散化+线段树维护线段覆盖长度qaq B.rental（贪心+二分+枚举） 枚举留几头牛，贪心算收益qaq C.mootube（并查...
• Icefox_zhx
• 2018年01月21日 22:27
• 199

举报原因： 您举报文章：USACO 2009 Open Silver 3.Cow Digit Game简单博弈论 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)