文章

84

粉丝

2

获赞

586

访问

23.7k

头像
进制转换 题解:
P1178 北京大学上机题
发布于2026年2月1日 09:52
阅读数 266

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

vector<int> divide(vector<int> A, int b) {
    vector<int> C;
    for (int i = A.size() - 1, r = 0; i >= 0; i --) {
        r = r * 10 + A[i];
        C.push_back(r / b);
        r %= b;
    }
    reverse(C.begin(), C.end());
    while (C.size() && C.back() == 0) {
        C.pop_back();
    }
    return C;
}

int main() {
    string s;

    while (cin >> s) {
        int len = s.size();
        vector<int> A;
        for (int i = 0; i < len; i ++) {
            A.push_back(s[len - i - 1] - '0');
        }

        string res;
        if (s == "0") {
            res = "0";
        } else {
            while (A.size()) {
                res += to_string(A[0] % 2);
                A = divide(A, 2);
            }
            reverse(res.begin(), res.end());
        }
        cout << res << en...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发