#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。

猜你喜欢

转载自www.cnblogs.com/xiaofengqaq/p/10929980.html
今日推荐