肥余打敗反加法獸後,遇見了 反減法獸!
在他以為只是反減法獸而已之後,反加法獸也一起出現了!
範例測資
範例輸入 | 範例輸出 |
---|---|
第一行為測資數量 測資第一行是(+/-) 測資第二行是一個算式 例如:9+9、5-3、2-9 | 輸出為算式結果 |
3 – 6-5 + 6+7 – 0-3 | 1 13 -3 |
解題思路
使用字串來收加法的算式,跑字串的 For迴圈,宣告一個空的字串,每次都把目前字元加到空的字串中,如果目前字串是「+」或「-」,則將加起來的字串轉成整數並且將 字串.substr(目前位置 +1, 字串.length()) 也變成整數進行加或減的運算,最後輸出運算結果。
範例程式碼-ZeroJudge K680: 肥余歷險記—(反數學城2)
#include <iostream>
using namespace std;
int toint(string str)
{
if (str.length() == 1) return int(str[0] - '0');
return stoi(str);
}
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
for (int i = 0; i<N; i++)
{
char op;
cin >> op;
string str, tmp = "";
cin >> str;
int ans = 0;
for (int j = 0; j<str.length(); j++)
{
if (str[j] == op)
{
ans += toint(tmp);
if (op == '+') ans += toint(str.substr(j+1, str.length()));
else ans -= toint(str.substr(j+1, str.length()));
break;
}
tmp += str[j];
}
cout << ans << "\n";
}
}
//ZeroJudge K680
//Dr. SeanXD