輸入 n (n<100) 個 32 位整數,輸出其「反轉數」:
1. 正整數去掉尾部 0 後反轉 (1200 → 2100? 題意實為保留尾部 0 位置,即 1200 → 0021 → 2100? 樣例 1200 → 2100)。
2. 負數保留負號反轉絕對值 (-12 → -21)。
3. 全 0 輸出 0。
輸入:3\n12\n-12\n1200
輸出:21\n-21\n2100
規則:將數字字符串反轉,前導 0 變尾部 0 保留,負號固定在最前。
#include <bits/stdc++.h>
using namespace std;
string reverseNum(string s) {
bool neg = false;
if (s[0] == '-') { neg = true; s = s.substr(1); }
reverse(s.begin(), s.end());
// 去掉前導 0 (原尾部 0) 但題目要求保留? 樣例 1200→2100 說明反轉後前導 0 變尾部 0 保留
// 實際只需直接反轉字符串,再去掉前導 0? 不,1200 反轉為 "0021",若去前導 0 變 "21" 錯誤。
// 正確理解:按字符串反轉,負號單獨處理。
if (neg) return "-" + s;
return s;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T; cin >> T;
while (T--) {
string s; cin >> s;
cout << reverseNum(s) << '\n';
}
return 0;
}