今天写一道水题做法,杭电2054
题目地址附上:HDU-2054
这题乍一看,不就==就搞定嘛,果真想多了
其实这是一道大数,但是这是一道不需要任何算法的大数,直接字符串解决就OK
简单分析:
设两个字符串:m,n
直接string的compare判断,相等就YES
如果不相等就分多种情况
1.m,n都有小数点,但是字符串长度,不一样就可能最后零的原因,利用append添加到一样长再判断就OK
2.一个有一个没有小数点,没有的先加上,再和1一样,短的用append末尾加0,再判断就OK
3.要是都没有小数点还不一样那不废话,都不是小数还不等肯定NO了哦
总结:这就是一道和大数没有关系的无脑大数题
c++直接调用string的方法,当然java也就一样了,C语言就要稍微麻烦点了,就自己写方法加就OK
就这么简单
上 AC 代码:
#include<iostream>
#include<string>
#include<cmath>
#include<sstream>
#include<iomanip>
#include<algorithm>
using namespace std;
int main()
{
string m,n;
while(cin>>m>>n){
if(m.compare(n)==0){
cout << "YES" << endl;
continue;
}
else if(m.find('.')==-1&&n.find('.')==-1&&m.compare(n)!=0){
cout << "NO" << endl;
continue;
}
else if(m.find('.')==-1&&n.find('.')!=-1){
m.append(".");
int k=n.length()-m.length();
while(k--)
m.append("0");
if(m.compare(n)==0){
cout << "YES" << endl;
continue;
}
else{
cout << "NO" << endl;
}
}
else if(m.find('.')!=-1&&n.find('.')==-1){
n.append(".");
int k=m.length()-n.length();
while(k--)
n.append("0");
if(m.compare(n)==0){
cout << "YES" << endl;
continue;
}
else{
cout << "NO" << endl;
}
}
else{
int k=m.length()-n.length();
if(k>0)
while(k--)
n.append("0");
else{
k=n.length()-m.length();
while(k--)
m.append("0");
}
if(m.compare(n)==0)
cout << "YES" << endl;
else
cout << "NO" << endl;
}
}
return 0;
}
来源:CSDN
作者:#rookie
链接:https://blog.csdn.net/qq_44728974/article/details/103653779