ABC D求改
  • 板块学术版
  • 楼主code_hyx
  • 当前回复9
  • 已保存回复9
  • 发布时间2023/4/15 22:11
  • 上次更新2023/10/23 18:21:33
查看原帖
ABC D求改
530797
code_hyx楼主2023/4/15 22:11
#include<bits/stdc++.h>
using namespace std;
const long long mod=998244353;
long long n,sum[600005],tail=0,tab[600005],ss=0,cnt=0,len=0;
string s;
void ycl()
{
    tab[0]=1;
    for(int i=1;i<=n;i++)
    {
        tab[i]=(tab[i-1]*10)%mod;
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    s="1";
    sum[0]=1;
    ycl();
    for(long long i=1;i<=n;i++)
    {
        if(s.length()>len)len=s.length();
        int op,x;
        cin>>op;
        if(op==1)
        {
            cin>>x;
            if(s.length()==0)sum[0]=x;
            else 
            {
                sum[s.length()]=(sum[len-1]*10+x)%mod;
                //cout<<"presum="<<sum[s.length()]<<"\n";
                sum[s.length()]=(sum[s.length()]-ss*tab[len]+ss*mod)%mod;
                //cout<<"sum="<<sum[s.length()]<<"\n";
            }
            //cout<<s.length()<<" "<<sum[s.length()]<<" "<<sum[s.length()-1]<<" "<<"\n"; 
            s+=char(x+'0');
            //cout<<"s="<<s<<"\n";
            if(s.length()>len)len=s.length();
        }
        if(op==2)
        {
            ss=(ss*10+s[0]-'0')%mod;
            s.erase(0,1);
            //cout<<"s="<<s<<"\n";
        }
        if(op==3)
        {
            //cout<<"sum="<<sum[len-1]<<"\n"; 
            //cout<<"ss="<<ss<<"\n"; 
            //cout<<"tab="<<tab[len-1]<<"\n"; 
            cout<<(sum[len-1]-ss*tab[len-1]+ss*mod)%mod<<"\n";
        }
    }
    return 0;
}

WA了11个点,rnd和del的点全错了,one和add的点都是对的,求改。
另:有人说今天的abc是Unrated的,为什么?是这样吗?

2023/4/15 22:11
加载中...