标签:push const ons while panel str 历届试题 算子 clear
上一轮运算的结果,是下一轮运算的第一个算子。进制也是。
#include<iostream>
#include<algorithm>
#include<string>
const long long MAX=2E5+7;
using namespace std;
long long n,j,res,flag,a[2];
string t;
long long change(string t,long long k)
{
long long e=t.size();
long long ts=0;
for(long long i=0;i<e;++i)
{
if(‘A‘<=t[i]&&t[i]<=‘Z‘) ts=ts*k+t[i]-‘A‘+10;
else ts=ts*k+t[i]-‘0‘;
}
return ts;
}
string rchange(long long res,long long k)
{
if(res==0) return "0";
string s;
long long r;
while(res)
{
r=res%k;
if(r>=10) s.push_back(r+‘A‘-10);
else s.push_back(r+‘0‘);
res/=k;
}
reverse(s.begin(),s.end());
return s;
}
int main()
{
cin>>n;
long long k=10;
while(n--)
{
cin>>t;
if(t=="NUM")
{
cin>>t;
if(j) { a[0]=change(t,k);j=0; }
else a[1]=change(t,k);
if(flag)
{
switch(flag)
{
case 1:a[0] = a[0]+a[1];break;
case 2:a[0] = a[0]-a[1];break;
case 3:a[0] = a[0]*a[1];break;
case 4:a[0] = a[0]/a[1];break;
case 5:a[0] = a[0]%a[1];break;
}
flag=0;
}
}
else if(t=="CHANGE") cin>>k;
else if(t=="ADD") { flag=1; }
else if(t=="SUB") { flag=2; }
else if(t=="MUL") { flag=3; }
else if(t=="DIV") { flag=4; }
else if(t=="MOD") { flag=5; }
else if(t=="EQUAL")
{
cout<<rchange(a[0],k)<<endl;
}
else if(t=="CLEAR"){ j=1;}
}
return 0;
}
标签:push const ons while panel str 历届试题 算子 clear
原文地址:https://www.cnblogs.com/chrysanthemum/p/12737153.html