http://lx.lanqiao.cn/problem.page?gpid=T459
因为存到数组里了 忘记特判0的情况! 智障啊 过完寒假一点状态都没有。。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
char ch[100];
ll ans,tmp,k;
int q,len,i,flag;
//freopen("out.txt","w",stdout);
scanf("%d",&q);
k=10,flag=-1;
while(q--){
scanf("%s",ch);
if(strcmp(ch,"NUM")==0){
scanf("%s",ch);
tmp=0,len=strlen(ch);
for(i=0;i<len;i++){
tmp*=k;
if('0'<=ch[i]&&ch[i]<='9'){
tmp+=(ch[i]-'0');
}
else{
tmp+=(ch[i]-'A'+10);
}
}
if(flag==0){
ans=tmp;
}
else if(flag==1){
ans+=tmp;
}
else if(flag==2){
ans-=tmp;
}
else if(flag==3){
ans*=tmp;
}
else if(flag==4){
ans/=tmp;
}
else{
ans%=tmp;
}
flag=-1;
}
else if(strcmp(ch,"CHANGE")==0){
scanf("%lld",&k);
}
else if(strcmp(ch,"EQUAL")==0){
tmp=ans,len=0;
while(tmp>0){
if(tmp%k<=9) ch[len]='0'+tmp%k;
else ch[len]='A'+tmp%k-10;
tmp/=k,len++;
}
if(len==0) printf("0\n");
else{
while(len>0){
len--;
printf("%c",ch[len]);
}
printf("\n");
}
}
else if(strcmp(ch,"CLEAR")==0){
ans=0,flag=0;
}
else{
if(strcmp(ch,"ADD")==0){
flag=1;
}
else if(strcmp(ch,"SUB")==0){
flag=2;
}
else if(strcmp(ch,"MUL")==0){
flag=3;
}
else if(strcmp(ch,"DIV")==0){
flag=4;
}
else{
flag=5;
}
}
}
return 0;
}
/*
10
CLEAR
NUM 1024
CHANGE 2
ADD
NUM 100000
CHANGE 8
EQUAL
*/