• 取石子


    取石子

    描述

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

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

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

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

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

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

     1 #include <stdio.h>/*yougth只要保证自己取完后剩下的为偶数段即可*/
     2 
     3 int main (void)
     4 {
     5     int n;
     6     while (scanf("%d", &n) != EOF)
     7     {
     8         if(n > 2)
     9             printf("Yougth
    ");
    10         else
    11             printf("Hrdv
    ");
    12     }
    13     return 0;
    14 }
  • 相关阅读:
    Extjs的学习及MIS系统实践应用(系列文章)
    Extjs的js函数
    【VS Code】使用技巧
    【算法技巧】算法技巧记录
    【踩坑记录】vs2017 git 版本控制问题
    【IDE】解决国内下载安装vs 过慢问题
    【c#基础】.Net编译器平台
    【查看IIS站点日志】
    【项目管理】人月神话
    【c#基础】反射、元数据和动态编程
  • 原文地址:https://www.cnblogs.com/a1225234/p/4525727.html
Copyright © 2020-2023  润新知