• 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(添加时记得备注)
  • 相关阅读:
    你欠我的幸福,怎么弥补
    爱,请你走开
    一生为你
    爱你到底
    粒子滤波简介(转载)
    关于小波变换和Gabor变换的一些知识!
    基于Opencv的MeanShift跟踪算法实现
    opencv学习网页
    基于OpenCV库的Gabor滤波器的实现
    Mean Shift算法(CamShift)
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9580085.html
Copyright © 2020-2023  润新知