思路:模拟题。注意计算过程始终用十进制来保存结果,输出时再将结果转换为k进制。
有一个坑,后面大概7题,计算结果有多处0。
#include <bits/stdc++.h>
using namespace std;
map<char,int>mp;
map<int,char>mpc;
long long k_to_o(int k,string str)
{
long long ans=0;
for(int i=0;i<str.size();i++)
{
ans=ans*k+mp[str[i]];
}
return ans;
}
string o_to_k(int k,long long ans)
{
string str="";
while(ans)
{
str=mpc[ans%k]+str;
ans/=k;
}
if(str.size()==0)
str="0";
return str;
}
long long oper(long long ans,long long str,string op)
{
if(op=="ADD")
return ans+str;
else if(op=="SUB")
return ans-str;
else if(op=="MUL")
return ans*str;
else if(op=="DIV&