东华OJ-基础题-104-A == B ?(C++)

  • 问题描述
    给你两个非负实数A和B,如果A等于B,输出 "YES", 否则输出"NO"
  • 输入说明
    第一行N,表示有N组测试数据。

以下N行,每行两个非负实数 A和B。每个实数不超过1000位,且可能在前面和后面有0存在。

  • 输出说明
    对于每组测试数据,如果A和B相等则输出 "YES", 否则输出 "NO"。

每组测试数据占一行,两组测试数据之间无空行。行首与行尾均无空格。

  • 输入范例
cpp 复制代码
2
100.0 00100
0100.1234576 00000000100.123457
  • 输出范例
cpp 复制代码
YES
NO

感想:substr()切割字符串,使用find_first_not_of() find_last_not_of()
代码如下:

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

// 标准化实数字符串:消除前导0、后导0、多余小数点
string normalize(string s) {
    // 步骤1:处理小数点,拆分整数部分和小数部分
    auto dot_pos = s.find('.');
    string integer_part = s.substr(0, dot_pos);
    string decimal_part = (dot_pos != string::npos) ? s.substr(dot_pos + 1) : "";

    // 步骤2:移除整数部分的前导0(保留单个0,如"000"→"0")
    auto first_non_zero = integer_part.find_first_not_of('0');
    if (first_non_zero != string::npos) {
        integer_part = integer_part.substr(first_non_zero);
    } else {
        integer_part = "0"; // 整数部分全0,保留一个0
    }

    // 步骤3:移除小数部分的后导0
    if (!decimal_part.empty()) {
        auto last_non_zero = decimal_part.find_last_not_of('0');
        if (last_non_zero != string::npos) {
            decimal_part = decimal_part.substr(0, last_non_zero + 1);
        } else {
            decimal_part = ""; // 小数部分全0,清空
        }
    }

    // 步骤4:拼接结果(无小数部分则不加小数点)
    if (decimal_part.empty()) {
        return integer_part;
    } else {
        return integer_part + "." + decimal_part;
    }
}

int main() {
    int n;
    cin>>n;
    string arr[n][2];
    for(int i = 0; i<n; ++i) {
        cin>>arr[i][0]>>arr[i][1];
        if(normalize(arr[i][0]) == normalize(arr[i][1]))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}
相关推荐
ShineWinsu2 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup
傲世仙尊2 小时前
多态-虚表才活到运行期符号表早已消失
c++
开开心心_Every2 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c2 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
是main不是漫2 小时前
【双指针——移动零】数组划分类题目的入门基石
c++·算法
吴卫斌2 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
·present·3 小时前
CSAPP(Bomb lab)
c语言·c++
王老师青少年编程3 小时前
2026年信奥赛c++普及组csp-j第二轮复赛真题
c++·真题·csp·信奥赛
超级架构师4 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
时间的拾荒人4 小时前
CMake 常用命令详解:从版本声明到安装部署
c++·面试