[白俊]2527号:化学食糧
回答日:2021-11-02
質問する
質問する
質問リンク:https://www.acmicpc.net/problem/2257
アクセスと解析
これはstackを利用すれば簡単に解決できる問題です.
要素記号が表す数字が異なるため、stackタイプをどのように処理するかを考える際にstringを使用して解決できます.
コード#コード# #include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string expr = "";
cin >> expr;
stack<string> st;
for (char c : expr) {
string s = "";
s += c;
if (s == "(" || s == "H" || s == "C" || s == "O") {
st.push(s);
} else if (s == ")") {
int num = 0;
while (!st.empty() && st.top() != "(") {
if (st.top() == "H") {
num += 1;
} else if (st.top() == "C") {
num += 12;
} else if (st.top() == "O") {
num += 16;
} else {
num += stoi(st.top());
}
st.pop();
}
st.pop();
st.push(to_string(num));
} else if (s >= "1" && s <= "9") {
int tmp = 0;
if (st.top() == "H") {
tmp = 1;
} else if (st.top() == "C") {
tmp = 12;
} else if (st.top() == "O") {
tmp = 16;
} else {
tmp = stoi(st.top());
}
st.pop();
st.push(to_string(tmp * stoi(s)));
}
}
int sum = 0;
while (!st.empty()) {
if (st.top() == "H") {
sum += 1;
} else if (st.top() == "C") {
sum += 12;
} else if (st.top() == "O") {
sum += 16;
} else {
sum += stoi(st.top());
}
st.pop();
}
cout << sum;
return 0;
}
結果
フィードバック
基本的な仕事にもっと集中しましょう.
Reference
この問題について([白俊]2527号:化学食糧), 我々は、より多くの情報をここで見つけました
https://velog.io/@bestcoders/백준-2257번-화학식량
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
これはstackを利用すれば簡単に解決できる問題です.
要素記号が表す数字が異なるため、stackタイプをどのように処理するかを考える際にstringを使用して解決できます.
コード#コード# #include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string expr = "";
cin >> expr;
stack<string> st;
for (char c : expr) {
string s = "";
s += c;
if (s == "(" || s == "H" || s == "C" || s == "O") {
st.push(s);
} else if (s == ")") {
int num = 0;
while (!st.empty() && st.top() != "(") {
if (st.top() == "H") {
num += 1;
} else if (st.top() == "C") {
num += 12;
} else if (st.top() == "O") {
num += 16;
} else {
num += stoi(st.top());
}
st.pop();
}
st.pop();
st.push(to_string(num));
} else if (s >= "1" && s <= "9") {
int tmp = 0;
if (st.top() == "H") {
tmp = 1;
} else if (st.top() == "C") {
tmp = 12;
} else if (st.top() == "O") {
tmp = 16;
} else {
tmp = stoi(st.top());
}
st.pop();
st.push(to_string(tmp * stoi(s)));
}
}
int sum = 0;
while (!st.empty()) {
if (st.top() == "H") {
sum += 1;
} else if (st.top() == "C") {
sum += 12;
} else if (st.top() == "O") {
sum += 16;
} else {
sum += stoi(st.top());
}
st.pop();
}
cout << sum;
return 0;
}
結果
フィードバック
基本的な仕事にもっと集中しましょう.
Reference
この問題について([白俊]2527号:化学食糧), 我々は、より多くの情報をここで見つけました
https://velog.io/@bestcoders/백준-2257번-화학식량
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
string expr = "";
cin >> expr;
stack<string> st;
for (char c : expr) {
string s = "";
s += c;
if (s == "(" || s == "H" || s == "C" || s == "O") {
st.push(s);
} else if (s == ")") {
int num = 0;
while (!st.empty() && st.top() != "(") {
if (st.top() == "H") {
num += 1;
} else if (st.top() == "C") {
num += 12;
} else if (st.top() == "O") {
num += 16;
} else {
num += stoi(st.top());
}
st.pop();
}
st.pop();
st.push(to_string(num));
} else if (s >= "1" && s <= "9") {
int tmp = 0;
if (st.top() == "H") {
tmp = 1;
} else if (st.top() == "C") {
tmp = 12;
} else if (st.top() == "O") {
tmp = 16;
} else {
tmp = stoi(st.top());
}
st.pop();
st.push(to_string(tmp * stoi(s)));
}
}
int sum = 0;
while (!st.empty()) {
if (st.top() == "H") {
sum += 1;
} else if (st.top() == "C") {
sum += 12;
} else if (st.top() == "O") {
sum += 16;
} else {
sum += stoi(st.top());
}
st.pop();
}
cout << sum;
return 0;
}
フィードバック
基本的な仕事にもっと集中しましょう.
Reference
この問題について([白俊]2527号:化学食糧), 我々は、より多くの情報をここで見つけました
https://velog.io/@bestcoders/백준-2257번-화학식량
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について([白俊]2527号:化学食糧), 我々は、より多くの情報をここで見つけました https://velog.io/@bestcoders/백준-2257번-화학식량テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol