HEX2BIN - Đổi hệ cơ số 16 sang hệ nhị phân

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho một số nguyên dương trong hệ cơ số ~16~, hãy viết số đó trong hệ cơ số ~2~ (hệ nhị phân).

Input

  • Dòng đầu ghi số nguyên dương ~T~ là số bộ test;
  • ~T~ dòng tiếp theo, mỗi dòng chứa một số nguyên dương ~n~ trong hệ thập lục phân (các ký tự A.. F viết hoa).

Giới hạn:

  • ~1≤T≤10^5,1≤n≤10^{18}~ (~n~ có không quá ~16~ chữ số ở hệ thập lục phân).

Output

  • Với mỗi số nguyên dương ~n~ trong hệ thập lục phân, in ra trên một dòng xâu nhị phân biểu diễn số đó trong hệ nhị phân (không bắt đầu bởi số ~0~).

Sample

Input #1
3
5
7
A
Output #1
101
111
1010

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 1
    mducc  đã bình luận lúc 2, Tháng 6, 2026, 13:33

    hint

    • Mỗi ký tự hex (0..F) tương ứng 4 bit nhị phân.
    • Duyệt từng ký tự, tra bảng ra 4 bit, ghép lại.
    • Xóa các số 0 ở đầu của xâu nhị phân.

    code tham khảo (c++)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        int t;
        cin >> t;
        while (t--) {
            string s;
            cin >> s;
            unsigned long long n = stoull(s, nullptr, 16);
            string res = bitset<64>(n).to_string();
            int pos = res.find('1');
            if (pos == string::npos) cout << "0\n";
            else cout << res.substr(pos) << "\n";
        }
        return 0;
    }
    

  • 0
    congtyluuthaibao1978  đã bình luận lúc 26, Tháng 11, 2025, 10:46

    include <bits/stdc++.h>

    using namespace std;

    int hexDigitValue(char c) { if (c >= '0' && c <= '9') return c - '0'; return 10 + (c - 'A'); }

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr);

    int T;
    cin >> T;
    while (T--) {
        string h;
        cin >> h;
        string res = "";
        bool first = true;
    
        for (int i = 0; i < (int)h.size(); i++) {
            int v = hexDigitValue(h[i]);
            // với ký tự đầu tiên: chuyển v sang nhị phân, bỏ 0 ở đầu
            string part = "";
            for (int b = 3; b >= 0; b--) {
                part.push_back( ((v >> b) & 1) ? '1' : '0' );
            }
            if (first) {
                // bỏ các số 0 ở đầu
                int pos = 0;
                while (pos < part.size() && part[pos] == '0') pos++;
                if (pos == part.size()) {
                    // v == 0
                    res.push_back('0');
                } else {
                    res += part.substr(pos);
                }
                first = false;
            } else {
                // với các hex sau, luôn thêm đủ 4 bit
                res += part;
            }
        }
    
        cout << res << "\n";
    }
    return 0;
    

    }


  • -4
    hohoanghai5042011  đã bình luận lúc 20, Tháng 1, 2024, 6:07 sửa 2

    to string là ra uy tín lun ai muốn xem code mẫu thì liên hệ gmail của mình