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;
    }
    
  • 相关阅读:
    解决ListView异步加载数据之后不能点击的问题
    android点击实现图片放大缩小 java技术博客
    关于 数据文件自增长 的一点理解
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Linux 超级用户的权利
    RAC 实例 迁移到 单实例 使用导出导入
    Shell 基本语法
    Linux 开机引导与关机过程
    RAC 实例不能启动 ORA1589 signalled during ALTER DATABASE OPEN
    Oracle RAC + Data Guard 环境搭建
  • 原文地址:https://www.cnblogs.com/zcy19990813/p/9702805.html
Copyright © 2011-2022 走看看