码迷,mamicode.com
首页 > 其他好文 > 详细

ecna2017-Game of Throwns

时间:2018-09-03 19:34:44      阅读:398      评论:0      收藏:0      [点我收藏+]

标签:++   i++   str   strlen   就是   span   out   can   using   

这题就是给你一个标号为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\n",(ans%n+n)%n);
    }
    return 0;
}

 

ecna2017-Game of Throwns

标签:++   i++   str   strlen   就是   span   out   can   using   

原文地址:https://www.cnblogs.com/bluefly-hrbust/p/9580085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!