扩大
缩小

NYOJ524A-B Problem

A-B Problem

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧。

现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢?

 
输入
有多组测试数据。每组数据包括两行,分别代表A和B。
它们的位数小于100,且每个数字前中可能包含+,- 号。
每个数字前面和后面都可能有多余的0。
每组测试数据后有一空行。
输出
对于每组数据,输出一行。
如果A-B=0,输出YES,否则输出NO。
样例输入
1
1

1.0
2.0
样例输出
YES
NO
View Code
 1  
 2 #include<stdio.h>
 3 #include<string.h>
 4  char stra[102],strb[102];
 5  int havepoint (char *str)
 6  {
 7      int i;
 8      int len=strlen(str);
 9      for(i=0;i<len;i++)
10      {
11        if(str[i]=='.')return 1;
12      }
13      return 0;
14  }
15 void change(char *str)
16  {
17       int len,i;
18       if(havepoint(str))
19       {
20          len=strlen(str);
21          for(i=len-1;i>=0;i--)
22             {
23               if(str[i]=='0')str[i]='\0';
24               else break;
25             }
26          len=strlen(str);
27          if(str[len-1]=='.')str[len-1]='\0';
28       }
29       if(str[0]=='+')
30       {
31            len=strlen(str);
32            int count=1;
33            for(i=1;i<len;i++)
34            {
35               if(str[i]=='0'&&str[i+1]!='\0')  count++;
36               else break;
37            }
38            for(i=0;i<len-count;i++)
39            {
40               str[i]=str[i+count];
41            }
42            str[i]='\0';
43       }
44       else if(str[0]=='-')
45       {
46            len=strlen(str);
47            int count=0;
48            for(i=1;i<len;i++)
49            {
50               if(str[i]=='0'&&str[i+1]!='\0')  count++;
51               else break;
52            }
53            for(i=1;i<len-count;i++)
54            {
55               str[i]=str[i+count];
56            }
57            str[i]='\0';
58            if(str[0]=='-'&&str[1]=='0'){str[0]='0';str[1]='\0';}
59       }
60       else 
61           {    
62                 len=strlen(str);
63                int count=0;
64                for(i=0;i<len;i++)
65                {
66                   if(str[i]=='0'&&str[i+1]!='\0')  count++;
67                   else break;
68                }
69                for(i=0;i<len-count;i++)
70                {
71                   str[i]=str[i+count];
72                }
73                str[i]='\0';
74       }
75       
76       
77    // puts(str);       
78  }
79          
80 int main()
81 {
82    
83     while(scanf("%s%s",&stra,&strb)!=EOF)
84     {
85         change(stra);change(strb);
86         printf("%s\n\n",strcmp(stra,strb)==0?"YES":"NO");
87     }
88     return 0;
89 }
90     
91     
92         

 

posted on 2012-11-14 21:46  LinuxPanda  阅读(438)  评论(0编辑  收藏  举报

导航