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 Code1 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