zoukankan      html  css  js  c++  java
  • Game of Nuts

    The war for Westeros is still in process, manpower and supplies are coming to an end and the winter is as near as never before. The game of thrones is unpredictable so Daenerys and Stannis decided to determine the true ruler of Seven Kingdoms playing more predictable and shorter game. For example, the game of nuts is the ideal candidate.

    Rules of this game are quite simple. Players are given n heaps of nuts. There is an odd number of nuts in each heap. Players alternate turns. In each turn player chooses an arbitrary heap and divides it into three non-empty heaps so as there is again an odd number of nuts in each heap. The player who cannot make a move loses.

    Daenerys has dragons so she moves first. Your task is to determine the winner assuming both Daenerys and Stannis play optimally. Please, do it and stop the war for Westeros!

    Input

    In the first line there is an odd integer n (1 ≤ n ≤ 777).

    In the second line there are n integers separated by spaces. These are the amounts of nuts in each heap at the beginning of the game. It is guaranteed that each heap contains not less than one and not more than 54321 nuts and this amount is an odd number.

    Output

    Output "Daenerys" (without quotes) in case of Daenerys’ win. Otherwise output "Stannis".

    Example

    input output
    1
    3
    
    Daenerys
    
    3
    1 1 1
    
    Stannis
    
    5
    777 313 465 99 1
    
    Daenerys

    题意:共有N堆,要求两人先后分大于三的,分成3堆。

    思路:7分成1 1 5 再分5成 1 1 3 再分3 为1 1 1

    大于等于3的进栈

    
    #include <iostream>
    #include <stdio.h>
    #include <deque>
    #include <algorithm>
    using namespace std;
    deque<int>dp;
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            int i,s=0,x;
            for(i=0;i<n;i++)
            {
                scanf("%d",&x);
                dp.push_back(x);
            }
            while(!dp.empty())
            {
                x=dp.front();
                if(x>=3)
                {
                    s++;
                    dp.push_back(x-2);
                }
                dp.pop_front();
            }
            if(s%2==0)
                printf("Stannis
    ");
            else
                printf("Daenerys
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    C# 类动态添加属性、方法(Z)
    WPF三大模板简介(Z)
    C# mongodb 驱动操作(Z)
    解析Exception和C#处理Exception的常用方法总结
    创建 WPF 工具箱控件
    WPF 线程 Dispatcher
    Path
    C#操作字符串方法总结<转>
    P2058 海港
    P2234 [HNOI2002]营业额统计
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702805.html
Copyright © 2011-2022 走看看