文章

52

粉丝

68

获赞

22

访问

11.5k

头像
十进制和二进制 题解:手工求模,求乘算模拟
P1176 清华大学上机题
发布于2025年1月27日 17:36
阅读数 79

#include <bits/stdc++.h>
using namespace std;

string decimalToBinary(string decimal) {
    string binary = "";
    
    while (decimal != "0") {
        // 获取最后一位的奇偶性
        int lastDigit = decimal.back() - '0';
        binary.push_back((lastDigit % 2) + '0');
        
        // 除以2,更新十进制数
        string newDecimal = "";
        int carry = 0;
        for (char ch : decimal) {
            int currentDigit = ch - '0';
            int newDigit = (currentDigit + carry * 10) / 2;
            carry = (currentDigit + carry * 10) % 2;
            if (!newDecimal.empty() || newDigit != 0) {
                newDecimal.push_back(newDigit + '0');
            }
        }
        decimal = newDecimal.empty() ? "0" : newDecimal;
    }
    
    // 反转二进制字符串
    reverse(binary.begin(), binary.end());
    return binary.empty() ? "0" : binary;
}

string binaryToDecimal(string binary) {
    string decimal = "0"; // 初始化十进制结果为0
    
    for (char bit : binary) ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发