【杭电】[2054]A==B

这里写图片描述
这里写图片描述

一开始觉得非常简单的一道题
结果写了这么多
发完代码再说话:

#include<stdio.h>
#include<string.h>
int main() {
    char A[200000],B[200000],M[200000];
    int i,n,k,x;
    memset(B,'\0',sizeof(A));
    memset(B,'\0',sizeof(B));
    while(scanf("%s %s",&A,&B)!=EOF) {
        for(n=0; n<strlen(A); n++) {
            if(A[n]!='0') {
                break;
            }
        }
        for(i=n,k=0; i<200000; i++,k++)
            M[k]=A[i];
        memset(A,'\0',sizeof(A));
        for(i=0,n=strlen(M); i<strlen(M); i++) {
            if(M[i]=='.') {
                for(; n>0; n--) {
                    if(M[n-1]!='0'&&M[n-1]!='.') {
                        break;
                    }
                    if(M[n-1]=='.') {
                        M[n-1]='\0';
                        break;
                    }
                }

            }
        }
        for(i=0,k=0; i<n; i++,k++)
            A[k]=M[i];
        memset(M,'\0',sizeof(M));
        for(n=0; n<strlen(B); n++) {
            if(B[n]!='0') {
                break;
            }
        }
        for(i=n,k=0; i<200000; i++,k++)
            M[k]=B[i];
        memset(B,'\0',sizeof(B));
        for(i=0,n=strlen(M); i<strlen(M); i++) {
            if(M[i]=='.') {
                for(; n>0; n--) {
                    if(M[n-1]!='0'&&M[n-1]!='.') {
                        break;
                    }
                    if(M[n-1]=='.') {
                        M[n-1]='\0';
                        break;
                    }
                }
            }
        }
        for(i=0,k=0; i<n; i++,k++)
            B[k]=M[i];
        if(strcmp(A,B))
            printf("NO\n");
        else {
            printf("YES\n");
        }
    }
    return 0;
}

还是放在杭电11页中的中文题
第一次感受到来自ACM满满的恶意……
当时天真的以为是这样的:

if(a==b)
printf("YES\n");
else
printf("NO\n");

但是!
在WA了之后
看了讨论区
感受到气氛诡异
学长又说这一题暂时不用做
甚至有的说他到现在都没AC这一题
但……初生牛犊不怕虎
最后AC的时候好高兴啊
最后发现一直卡住我的是数组初识化的问题-.-
思路都是对的
而且我的这个代码似乎还多考虑了一些不用考虑的问题
总之……

题目地址:【杭电】[2054]A==B

原文地址:https://www.cnblogs.com/BoilTask/p/12570108.html