【杭电】[2054]A==B

文章字数:383

问题描述

问题分析

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#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满满的恶意……
当时天真的以为是这样的:

1
2
3
4
if(a==b)
printf("YES\n");
else
printf("NO\n");

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

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...