ZeroJudge K680: 肥余歷險記—(反數學城2)

肥余打敗反加法獸後,遇見了 反減法獸!

在他以為只是反減法獸而已之後,反加法獸也一起出現了!

範例測資

範例輸入範例輸出
第一行為測資數量
測資第一行是(+/-)
測資第二行是一個算式
例如: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

發佈留言