取石子(七)

来源:互联网 发布:java最新版本下载 编辑:程序博客网 时间:2024/04/29 16:17

取石子(七)

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

Yougth和Hrdv玩一个游戏,拿出n个石子摆成一圈,Yougth和Hrdv分别从其中取石子,谁先取完者胜,每次可以从中取一个或者相邻两个,Hrdv先取,输出胜利着的名字。

输入
输入包括多组测试数据。
每组测试数据一个n,数据保证int范围内。
输出
输出胜利者的名字。
样例输入
23
样例输出
HrdvYougth

刚开始看这道题以为是巴什博弈问题,其实根本就不是,题目的叙述是将所有的石子摆成一圈,而巴什博弈是离散的,不符合这一题的要求。

假设石子数等于5,如果先者先取一个,那么后者拿走两个,将剩下的两个石子分成两堆,后者赢。如果先者先取二个,那么后者取一个使剩下的两个石子分成两堆,后者赢。

假设石子数等于6,如果先者先取一个,那么后者拿走一个,将剩下的石子分成两段,每段两个,如果先者再拿两个,那么后者赢,如果先者再拿一个,那么后者再取另一堆中的一个,这样剩下的两个石子被分成两堆, 后者赢。         如果先者先取两个,那么后者也取两个使剩下的两个石子分成两堆,后者赢。

所以当先者取走后,后者取走一个或者两个,将剩下的石子分成对称的两段,以此类推,那么如果石子数大于2后者一定赢。


[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>  
  2.   
  3. int main (void)  
  4. {  
  5.     int n;  
  6.     while (scanf("%d", &n) != EOF)  
  7.     {  
  8.         if(n > 2)  
  9.             printf("Yougth\n");  
  10.         else  
  11.             printf("Hrdv\n");  
  12.     }  
  13.     return 0;  
  14. }  
0 0