题解 P2104 【二进制】

· · 题解

vector是个好东西

#include<stdio.h>
#include<vector>
#define rpt(n) for(register int ttxyc=0;ttxyc<(n);++ttxyc)//宏定义
int n,m,_;std::vector<int>a;char c;
main()
{
    scanf("%d%d",&n,&m);//输入
    rpt(n){scanf("%1d",&_);a.push_back(_);}//再输入
    rpt(m)
    {
        for(;c=getchar(),c!='+'&&c!='-'&&c!='*'&&c!='/';);//获取操作
        switch(c)
        {
            case'*':a.push_back(0);break;
            case'/':a.pop_back();break;
            case'+':++a.back();for(register int i=a.size()-1;a[i]==2;--i)++a[i-1],a[i]=0;break;
            case'-':--a.back();for(register int i=a.size()-1;a[i]<0;--i)--a[i-1],a[i]=1;break;
        }
    }
    for(register int i=0;i<a.size();++i)printf("%d",a[i]);//输出
}/**/