ZeroJudge A307: 數字反轉

給定一個整數,請將該數各位上數字反轉得到一個新數。 新數也應滿足整數的常見形式,即除非給定的原數為零,否則反轉後得到的新數的最高位數字不應為零。

範例測資

範例輸入範例輸出
EOF 輸入,每筆輸入共 1 行,一個整數 N。輸出共 1 行,一個整數,表示反轉後的新數。
123
-380
321
-83

解題思路

收 N 的時候使用整數的型態收資料,並且判斷 N 是否為負數,設定一個布林值存是否為負數。如果 N 為負數,先將 N *= -1 將 N 變成正數。

將 N 轉換為字串後 reverse,並再轉換回整數型態,如果剛剛判斷 N 為負數,則需要乘以 -1。

範例程式碼-ZeroJudge A307: 數字反轉

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    while (cin >> N)
    {
        int negative = 1;
        if (N < 0)
        {
            negative = -1;
            N *= -1;
        }
        string str = to_string(N);
        reverse(str.begin(), str.end());
        int ans;
        if (str.length() == 1) ans = int(str[0] - '0');
        else ans = stoi(str);
        ans *= negative;
        cout << ans << "\n";
    }
}

//ZeroJudge A307
//Dr. SeanXD

發佈留言