题解 UVA11821 【High-Precision Number】

2018-10-05 20:11:02


题意:多组数据,每一组数据输入若干浮点数,以 0 结束,要求对每组数据输入的浮点数求和输出(高精)

轮子:NOI 2016 《国王饮水记》,€€₣ 向选手下发了浮点数高精库,用就好了。毕竟懒得造轮子

坑点:注意不能输出多余的末尾零。且结果可能是整数,不能输出小数点。

核心代码:(毕竟完整代码七八百行放这里不合适)

// 去除末尾零,相当于反转字符串去掉前导零外加判断小数点
std::string clear(std::string s) {
    int len = s.size() - 1;
    for (int i = len; i >= 0; --i) {
        if (s[i] == '0') --len;
        else break;
    }
    if (s[len] == '.') --len;
    return s.substr(0, len + 1);
}

void solution() {
    std::string s;
    Decimal ans = 0;
    while (std::cin >> s && s != "0") ans += s;
    std::cout << clear(ans.to_string(0)) << std::endl;
}

完整代码