文章

34

粉丝

18

获赞

6

访问

16.0k

头像
进制转换2 题解:
P1259 北京大学机试题
发布于2024年6月29日 19:33
阅读数 622

浮点数运算误差pow 函数在计算较大整数幂时可能会引入浮点数误差,导致结果不准确。
 

#include <iostream>
#include <string>

using namespace std;

typedef long long LL;

int main() {
    string s;
    while (cin >> s) { // 支持多组数据输入
        LL ans = 0;
        int base = 1; // 十六进制最低位权重是 1

        // 从最后一位开始处理,跳过前两位 "0x"
        for (int i = s.size() - 1; i >= 2; --i) {
            if (s[i] >= '0' && s[i] <= '9') {
                ans += (s[i] - '0') * base;
            } else if (s[i] >= 'A' && s[i] <= 'F') {
                ans += (s[i] - 'A' + 10) * base;
            } else if (s[i] >= 'a' && s[i] <= 'f') {
                ans += (s[i] - 'a' + 10) * base;
            }
            base *= 16; // 权重每次乘以 16
        }

        cout << ans << endl;
    }

    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发