zoukankan      html  css  js  c++  java
  • ecna2017-Game of Throwns

    这题就是给你一个标号为0-n-1的环,然后给你M个操作,操作有两种,一种是直接给一个数,这数的正负代表我当前向前(向后)仍了xx个位置的球,或者给你一个撤销操作表示为 undo m,表示撤销最近的M个操作

    这题是个标准的栈模拟,但是我忘记了两个问题,由于这里要判断undo,因此是字符串输入,这样我们需要判断是否是undo并且是否为负数,并且最后可能出现负数,需要用同余模减法ans=(ans%mod+mod)%mod

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<stack>
    using namespace std;
    char a[5000000];
    int main()
    {
        int n,m;
        int len,f,tmp;
        int ss;
        int nu;
        stack<int>p;
        while(~scanf("%d%d",&n,&m))
        {
            int mod=1;
            for (int i=1; mod<=10000; i++)
            {
                mod=mod*n;
            }
            for (int i=1; i<=m; i++)
            {
                scanf("%s",a);
                if(a[0]=='u')
                {
                    scanf("%d",&nu);
                    while(!p.empty() && nu>0)
                    {
                        //cout<<p.top()<<endl;
                        p.pop();
                        nu--;
                    }
                }
                else
                {
                    len=strlen(a);
                    f=1;
                    ss=0;
                    //cout<<a<<endl;
                    if (a[0]!='-')
                    {
                        while(len!=0)
                        {
                            ss+=(a[len-1]-'0')*f;
                            f*=10;
                            len--;
                        }
                        p.push(ss);
                    }
                    else
                    {
                        while(len!=1)
                        {
                            ss-=(a[len-1]-'0')*f;
                            f*=10;
                            len--;
                        }
                        p.push(ss);
                    }
                }
            }
            int ans=0;
            while(!p.empty())
            {
                int tp=p.top();
                p.pop();
                ans+=tp;
            }
            printf("%d
    ",(ans%n+n)%n);
        }
        return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    在C#中对枚举进行位运算--枚举组合
    详解C#泛型(一)
    详解C#委托和事件(二)
    详解C#特性和反射(四)
    详解C#特性和反射(三)
    详解C#特性和反射(二)
    openssl 证书cert与key合并pfx
    GRPC Oauth IdentityServer4
    GRPC Oauth Identity
    PG SQL funcation
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9580085.html
Copyright © 2011-2022 走看看