东华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;
}
相关推荐
lightqjx2 小时前
【C++】unordered系列的封装
开发语言·c++·stl·unordered系列
zh_xuan2 小时前
kotlin lazy委托异常时执行流程
开发语言·kotlin
阿猿收手吧!2 小时前
【C++】string_view:高效字符串处理指南
开发语言·c++
玄同7653 小时前
我的 Trae Skill 实践|使用 UV 工具一键搭建 Python 项目开发环境
开发语言·人工智能·python·langchain·uv·trae·vibe coding
Word码3 小时前
[C++语法] 继承 (用法详解)
java·jvm·c++
Yorlen_Zhang3 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
lxl13073 小时前
C++算法(1)双指针
开发语言·c++
淀粉肠kk3 小时前
C++11列表初始化:{}的革命性进化
c++
不绝1913 小时前
C#进阶:预处理指令/反射,Gettype,Typeof/关键类
开发语言·c#