CVB2D - Đổi hệ nhị phân sang thập 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ố ~2~ (hệ nhị phân), hãy viết số đó trong hệ cơ số ~10~.

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 xâu nhị phân (số được biểu diễn trong hệ nhị phân).

Giới hạn:

  • ~1 ≤ T ≤ 10^5~. Độ dài mỗi xâu nhị phân không quá ~63~.

Output

  • Với mỗi xâu nhị phân, in ra trên một dòng số đó trong hệ thập phân.

Sample

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

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:39 chỉnh sửa

    hint

    ta chuyển từ hệ nhị phân qua sô

    rồi chuyển số qua hệ cơ số 10

    code tham khảo: những hàm này có thể giúp các bạn áp dụng vào nhiều bài tập khác!

    #include <bits/stdc++.h>
    using namespace std;
    string convert(long long n, int base)
    {
        if(n == 0) return "0";
        string digits = "0123456789ABCDEF";
        string res = "";
        while(n)
        {
            res += digits[n % base];
            n /= base;
        }
        reverse(res.begin(), res.end());
        return res;
    }
    long long dl(string s, int base) {
        long long res = 0;
        for (char c : s) {
            int val;
            if (c >= '0' && c <= '9') val = c - '0';
            else val = c - 'A' + 10;
            res = res * base + val;
        }
        return res;
    }
    int main() {
        ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        int t;
        cin >> t;
        while (t--) {
            string s; 
            cin >> s;  
            long long n = dl(s, 2); 
            cout << convert(n, 10) << endl; 
        }
    }
    

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

    include <bits/stdc++.h>

    using namespace std;

    // lưu số lớn dạng string (decimal) string mul2(const string &s) { string res = s; int carry = 0; for (int i = res.size() - 1; i >= 0; i--) { int x = (res[i] - '0') * 2 + carry; res[i] = char('0' + (x % 10)); carry = x / 10; } if (carry) res.insert(res.begin(), char('0' + carry)); return res; }

    string add1(const string &s) { string res = s; int carry = 1; for (int i = res.size() - 1; i >= 0; i--) { int x = (res[i] - '0') + carry; res[i] = char('0' + (x % 10)); carry = x / 10; if (carry == 0) break; } if (carry) res.insert(res.begin(), '1'); return res; }

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

    int t;
    cin >> t;
    while (t--) {
        string bin;
        cin >> bin;
    
        string dec = "0";  // big integer dưới dạng string
    
        for (char c : bin) {
            dec = mul2(dec);      // nhân 2
            if (c == '1') dec = add1(dec); // cộng 1
        }
    
        cout << dec << "\n";
    }
    return 0;
    

    }


  • 0
    admin1906  đã bình luận lúc 6, Tháng 8, 2025, 7:16

    bai nay dung python tle :))


  • -5
    Minhsang1  đã bình luận lúc 20, Tháng 3, 2025, 14:49

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.