C++解法
4.火星文计算
已知火星人使用的运算符号为#和KaTeX parse error: Expected 'EOF', got '#' at position 16: ,其与地球人的等价公式如下 x#̲y = 4 * x + 3 *…y = 2 * x + y + 3
xy是无符号整数
火星人公式中#符优先级高于$相同的运算符按从左到右的顺序运算
确保输入为合法
例:
输入:
7#27$2#11
计算过程:
原式 = (28 + 81 + 2)$(8 + 33 + 2)
= 111 $ 43
= 222 + 43 + 3
输出:
268
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main() {
string input, tmp;
cin >> input;
istringstream istst(input);
vector<string> vec0;
while (getline(istst, tmp, '$'))
vec0.push_back(tmp);
for (int i = 0; i < vec0.size(); i++) {
istringstream istst1(vec0[i]);
vector<int> vec1;
while (getline(istst1, tmp, '#'))
vec1.push_back(stoi(tmp));
int sharp = vec1[0];
for (int j = 1; j < vec1.size(); j++)
sharp = 4 * sharp + 3 * vec1[j] + 2;
vec0[i] = to_string(sharp);
vec1.clear();
}
int res = stoi(vec0[0]);
for (int i = 1; i < vec0.size(); i++)
res = 2 * res + stoi(vec0[i]) + 3;
cout << res << endl;
}