文章
34
粉丝
18
获赞
6
访问
16.0k
浮点数运算误差: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;
}
登录后发布评论
暂无评论,来抢沙发