杭电acm 2054

2024-11-30 05:49:17
推荐回答(2个)
回答1:

只能说你考虑多了,其实只要考虑

1.00100 1.001

1.0000 1

就行了,去掉后面的0;

#include
#include
#include

using namespace std;

char a[50000],b[50000];

void run(char *a){
    int flg=0;
    for(;*a;a++)
        if(*a=='.') flg=1;
    if(flg){
        for(a--;*a=='0';a--);
        if(*a=='.') *a=0;
        *(a+1)=0;
    }
}

int main(){
    while(cin>>a>>b){
        run(a),run(b),puts(strcmp(a,b)?"NO":"YES");
    }
    return 0;
}

代码已AC

回答2:

  1. 先判定符号。如果存在的话。

  2. 去掉前导0,小数位最后面的0.

  3. 再比较这二个数。



你的数组最好放外面,开的太大,程序容易crash 。

注意下面的数据 。


+.0    0 

-.50    -0.5