首页 > 其他 > 详细

HDU2054:A == B ?

时间:2014-07-29 12:28:36      阅读:275      评论:0      收藏:0      [点我收藏+]

A == B ?

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 60827    Accepted Submission(s): 9451

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

 解题思路:

    1. 一看题目就觉得恶心,题目条件越简单,AC的条件就越苛刻。被坑了一次

    2.关键在于小数点,去除前导0和多余的后置0。

 

 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2054

bubuko.com,布布扣

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 char n[100000], m[100000];
 4 int main()
 5 {
 6     int i, j, len_n, len_m, flag, len_last, len_late,doc, q, p, count, start;
 7     char ch;
 8     while(1)
 9     {
10         memset(n, 0, sizeof(n));
11         memset(m, 0, sizeof(m));    
12         flag = i = j = doc = count = start = 0;
13         while(1)
14         {
15             if(scanf("%c", &ch) == EOF) return 0;
16             if(ch == \n && start == 1) break;
17             else if(ch !=   && ch != \n && flag == 0)
18             {
19                 n[i++] = ch;    
20             }
21             else if(ch ==   || ch == \n)
22             {
23                 flag = 1;
24                 start = 1;
25             }
26             else m[j++] = ch;
27             
28         }
29         len_n = strlen(n);
30         len_m = strlen(m);
31         if((n[0] == - && m[0] != -) || (n[0] != - && m[0] == -)) 
32         {
33             printf("NO\n");
34             continue;
35         } 
36         for(i = n[0] != -? 0:1; i<len_n && n[i] - 0== 0; i++);
37         for(j = m[0] != -? 0:1; j<len_m && m[j] - 0== 0; j++);
38         len_n -= i;
39         len_m -= j;
40         len_last = len_n < len_m? len_n:len_m;
41         len_late = len_n + len_m - len_last;
42         {
43             for(; count < len_last; i++, j++, count++)
44             if(n[i] - 0 != m[j] - 0) break;
45             else if(n[i] == .) doc = 1;
46             if(count >= len_late)
47             {
48                 
49                 printf("YES\n");
50             }
51             else
52             {
53              if(len_n > len_m) 
54              {
55                  if(doc != 1 && n[i] != .) printf("NO\n");
56                  else
57                  {
58                      for(i = n[i] == .? i+1: i; i<strlen(n); i++)
59                      if(n[i] - 0 != 0 ) break;
60                      if(i>=len_n) printf("YES\n");
61                      else printf("NO\n");
62                  }
63 
64              }
65              else if(len_n < len_m)
66              {
67                 if(doc != 1 && m[j] != .) printf("NO\n");
68                  else
69                  {
70                      for(j = m[j] == .? j+1: j; j<strlen(m); j++)
71                      if(m[j] - 0 != 0 ) break;
72                      if(j>=len_m) printf("YES\n");
73                      else printf("NO\n");
74                  }
75              }
76              else if(len_n == len_m) printf("NO\n");
77             }
78         }
79         
80     }
81     return 0;    
82 }

 

 

 



HDU2054:A == B ?,布布扣,bubuko.com

HDU2054:A == B ?

原文:http://www.cnblogs.com/yeshadow937/p/3874804.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!