社区讨论
样例全过,求调试/hack并解释,必关
P2395BBCode转换Markdown参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mlrj7yt3
- 此快照首次捕获于
- 2026/02/18 12:28 24 小时前
- 此快照最后确认于
- 2026/02/19 08:32 4 小时前
CPP
#include <bits/stdc++.h>
using namespace std;
string s, t1, t2, ans;
stack<int> st;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
while (getline(cin, t1)) {
s += t1 + "\n";
}
int len = s.length();
s = " " + s + " ";
t1 = "";
t2 = "";
for (int i = 1; i <= len; ++i) {
if (s[i] == '[') {
if (s[i + 1] != '/') {
if (s[i + 1] == 'h' && s[i + 2] == '1' && s[i + 3] == ']') {
st.push(1);
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'h' && s[i + 2] == '2' && s[i + 3] == ']') {
st.push(2);
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'i' && s[i + 2] == ']') {
st.push(3);
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'b' && s[i + 2] == ']') {
st.push(4);
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'u' && s[i + 2] == 'r' && s[i + 3] == 'l' && s[i + 4] == '=') {
st.push(5);
while (s[i] != '=') ++i;
}
else if (s[i + 1] == 'i' && s[i + 2] == 'm' && s[i + 3] == 'g' && s[i + 4] == '=') {
st.push(6);
while (s[i] != '=') ++i;
}
else if (s[i + 1] == 'q' && s[i + 2] == 'u' && s[i + 3] == 'o' && s[i + 4] == 't' && s[i + 5] == 'e' && s[i + 6] == ']') {
while (i <= len && !(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'q' && s[i + 3] == 'u' && s[i + 4] == 'o' && s[i + 5] == 't' && s[i + 6] == 'e' && s[i + 7] == ']')) ++i;
if (s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'q' && s[i + 3] == 'u' && s[i + 4] == 'o' && s[i + 5] == 't' && s[i + 6] == 'e' && s[i + 7] == ']') i += 7;
else {
cout << "Unclosed Mark";
return 0;
}
}
else {
st.push(100);
}
}
else {
if (s[i + 2] == 'h' && s[i + 3] == '1' && s[i + 4] == ']') {
if (st.empty() || st.top() != 1) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'h' && s[i + 3] == '2' && s[i + 4] == ']') {
if (st.empty() || st.top() != 2) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'i' && s[i + 3] == ']') {
if (st.empty() || st.top() != 3) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'b' && s[i + 3] == ']') {
if (st.empty() || st.top() != 4) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'u' && s[i + 3] == 'r' && s[i + 4] == 'l' && s[i + 5] == ']') {
if (st.empty() || st.top() != 5) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'i' && s[i + 3] == 'm' && s[i + 4] == 'g' && s[i + 5] == ']') {
if (st.empty() || st.top() != 6) {
cout << "Match Error";
return 0;
}
st.pop();
while (s[i] != ']') ++i;
}
else {
cout << "Match Error";
return 0;
}
}
}
}
if (!st.empty()) {
cout << "Unclosed Mark";
return 0;
}
bool flag = false;
t1 = "";
t2 = "";
for (int i = 1; i <= len; ++i) {
if (s[i] == '[') {
if (s[i + 1] != '/') {
if (s[i + 1] == 'h' && s[i + 2] == '1' && s[i + 3] == ']') {
ans += "# ";
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'h' && s[i + 2] == '2' && s[i + 3] == ']') {
ans += "## ";
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'i' && s[i + 2] == ']') {
ans += "*";
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'b' && s[i + 2] == ']') {
ans += "__";
while (s[i] != ']') ++i;
}
else if (s[i + 1] == 'u' && s[i + 2] == 'r' && s[i + 3] == 'l' && s[i + 4] == '=') {
t1 = "";
t2 = "";
while (s[i - 1] != '=') ++i;
while (s[i] != ']') t1 += s[i], ++i;
++i;
while (s[i] != '[') t2 += s[i], ++i;
while (s[i] != ']') ++i;
ans += "[";
ans += t2;
ans += "]";
ans += "(";
ans += t1;
ans += ")";
}
else if (s[i + 1] == 'i' && s[i + 2] == 'm' && s[i + 3] == 'g' && s[i + 4] == '=') {
t1 = "";
t2 = "";
while (s[i - 1] != '=') ++i;
while (s[i] != ']') t1 += s[i], ++i;
while (s[i] != '[') t2 += s[i], ++i;
while (s[i] != ']') ++i;
ans += "!";
ans += "[";
ans += t2;
ans += "]";
ans += "(";
ans += t1;
ans += ")";
}
else if (s[i + 1] == 'q' && s[i + 2] == 'u' && s[i + 3] == 'o' && s[i + 4] == 't' && s[i + 5] == 'e' && s[i + 6] == ']') {
if (s[i + 7] == '\n');
else if (i != 1 && s[i - 1] != '\n') ans += "\n> ";
else ans += "> ";
while (s[i] != ']') ++i;
++i;
while (i <= len && !(s[i] == '[' && s[i + 1] == '/' && s[i + 2] == 'q' && s[i + 3] == 'u' && s[i + 4] == 'o' && s[i + 5] == 't' && s[i + 6] == 'e' && s[i + 7] == ']')) {
ans += s[i];
if (s[i] == '\n' && !(s[i + 1] == '[' && s[i + 2] == '/' && s[i + 3] == 'q' && s[i + 4] == 'u' && s[i + 5] == 'o' && s[i + 6] == 't' && s[i + 7] == 'e' && s[i + 8] == ']')) ans += "> ";
++i;
}
i += 7;
}
}
else {
if (s[i + 2] == 'h' && s[i + 3] == '1' && s[i + 4] == ']') {
while (s[i] != ']') ++i;
ans += " #";
}
else if (s[i + 2] == 'h' && s[i + 3] == '2' && s[i + 4] == ']') {
while (s[i] != ']') ++i;
ans += " ##";
}
else if (s[i + 2] == 'i' && s[i + 3] == ']') {
while (s[i] != ']') ++i;
ans += "*";
}
else if (s[i + 2] == 'b' && s[i + 3] == ']') {
while (s[i] != ']') ++i;
ans += "__";
}
else if (s[i + 2] == 'u' && s[i + 3] == 'r' && s[i + 4] == 'l' && s[i + 5] == ']') {
while (s[i] != ']') ++i;
}
else if (s[i + 2] == 'i' && s[i + 3] == 'm' && s[i + 4] == 'g' && s[i + 5] == ']') {
while (s[i] != ']') ++i;
}
}
}
else ans += s[i];
}
cout << ans;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...