首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 1266 Reverse Number (整數反轉模擬題)

     編輯:關於C++

問題

輸入 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 保留,負號固定在最前。

簡潔實現 (C++)

#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;
}

注意事項

  • 輸入可能為 -0000,輸出 0。
  • 用字符串處理最簡潔,避免整數溢出與前導 0 麻煩。
  • 原題代碼較繁瑣,字符串反轉法大幅簡化邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved