HDOJ 2054 A == B ?

细心,细心,再细心!

其次,把数组要设置大点,我现开始设置100就WA了,改成1000又WA,最后改成100000就AC了。

给几个测试数据:

010.00     10    YES

010.           10.00000000   YES

010.00       01000          NO

前导0,后导0,标点’.’都要去掉再比较,注意只有在有标点’.’时才能去掉后导0.

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
 #include <iostream>
#include <string.h>
#include <cmath>
using namespace std;
 
// Author: Tanky Woo
// HDOJ 2054
// 终于AC了!
 
char a[100000], b[100000];
char *pa, *pb;
int main()
{
	while(scanf("%s %s", a, b) != EOF)
	{
		// 去掉.以后最后多余的0
		int len1= strlen(a);
		int len2 = strlen(b);
		char *ptr1 = strchr(a, '.');
		char *ptr2 = strchr(b, '.');
		pa = a+len1-1;
		pb = b+len2-1;
		// 注意考虑有无小数点,没小数点后面的0就不能删除了!
		if(ptr1 < pa && ptr1 != NULL)
			while(*pa == '0')
				*pa-- = 0;
		if(ptr2 < pb && ptr2 != NULL)
			while(*pb == '0')
				*pb-- = 0;
		if(*pa == '.')
			*pa = 0;
		if(*pb == '.')
			*pb = 0;
		pa = a, pb = b;
		// 去掉前置的0
		while(*pa == '0')
			pa++;
		while(*pb == '0')
			pb++;
		if(strcmp(pa, pb) == 0)
			printf("YES\n");
		else
			printf("NO\n");
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注