#C++初学记录(A==B?##高精度)
Posted xiaofengqaq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#C++初学记录(A==B?##高精度)相关的知识,希望对你有一定的参考价值。
Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
Input
each test case contains two numbers A and B.
Output
for each case, if A is equal to B, you should print "YES", or print "NO".
Sample Input
1 2
2 2
3 3
4 3
Sample Output
NO
YES
YES
NO
正确代码
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
int main(){
char a[100000],b[100000];
while(cin>>a>>b){
int Y_a=0,Y_b=0;
for(int i=0;i<strlen(a);i++)
if(a[i]=='.'){
Y_a=1;
break;
}
for(int i=0;i<strlen(b);i++)
if(b[i]=='.'){
Y_b=1;
break;
}
if(Y_a){
for(int i=strlen(a)-1;i>=0;i--){
if(a[i]=='0'){
a[i]=0;
}
else if(a[i]=='.'){
a[i]=0;
break;
}
else break;
}
}
// if(Y_a) {
// cout<<"!!!"<<a<<' '<<a[1]<<endl;
// } if(Y_b){
for(int i=strlen(b)-1;i>=0;i--)
if(b[i]=='0'){
b[i]=0;
}
else if(b[i]=='.'){
b[i]=0;
break;
}
else break;
strcmp(a,b)?puts("NO"):puts("YES");
}
}
题意理解
起初做这道题的时候以为这是一个签到题,直到wrong了五次发现这存在着潜在的问题,既是浮点型如0.111000和数据极大的问题没有解决,因此应该进行判断是否带有小数点并且去掉小数点后多余的0。
以上是关于#C++初学记录(A==B?##高精度)的主要内容,如果未能解决你的问题,请参考以下文章