杭电OJ 2054 A==B?

A==B?

题目只要你判断数字A是否等于B,傻子都知道肯定不是int数据类型可以存下的,A可能有1000位,要用字符串类型存储,比较的时候注意00010011都是一样的,即前导零不算

好吧,题目只说了number,没说是整数呀

分析:
比较前,先去掉前面多余的0,再去小数点后面多余的0(首先要保证有小数点)。最后,如果小数点后面所有的数都去的掉了,还要同时去掉小数点。

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
void ClearZero(string &str) {
int i;
for(i = 0; i < str.size(); ++i) {
if(str[i] != '0') {
break;
}
}
if(str[i] == '.') {
str.erase(0, i - 1);
} else {
str.erase(0, i);
}
for(i = 0; i < str.size(); ++i) {
if(str[i] == '.')
break;
}
if(i != str.size()) {//说明有小数点
int j;
for(j = str.size() - 1; j > i; --j) {
if(str[j] != '0') {
break;
}
}
if(j == i) {
str.erase(i);
} else {
str.erase(j + 1);
}
}
}
int main()
{
string a, b;
while(cin >> a >> b) {
ClearZero(a);
ClearZero(b);
if(a == b) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
return 0;
}
posted @   paopaotangzu  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示