hdu 2054 A == B ?

来源:互联网 发布:网络销售协议 编辑:程序博客网 时间:2024/06/05 08:45

A == B ?

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


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 22 23 34 3
 

Sample Output
NOYESYESNO
题目大意:看a是不是等于b思路:分很多种情况,有符号无符号,或者0.1 和 .1是相等的,还要注意没有用的0 我把前边后边没用的0都去掉,再分情况判断符号的问题,小数点的问题,代码 好长,有个很短的代码,也过了,但是01和1,+1和1,等很多情况测试都不对,但是 居然对了!,,,不太理解。附上大神超短代码。2014,11,9这题真烦人!
#include<stdio.h>#include<string.h>char a[150000],b[150000],c[150000],d[150000];int main(){int i,j,k,l,lena,lenb;while(scanf("%s%s",a,b)!=EOF){lena=strlen(a);lenb=strlen(b);for(i=0;i<lena;i++){if(a[i]=='.'){for(j=lena-1;j>=0;j--){if(a[j]!='0'){a[j+1]='\0';break;}}if(a[j]=='.')a[j]='\0';break;}}//把小数后边没用的0去掉 for(i=0;i<lenb;i++){if(b[i]=='.'){for(j=lenb-1;j>=0;j--){if(b[j]!='0'){b[j+1]='\0';break;}}if(b[j]=='.')b[j]='\0';break;}}//把小数后边没用的0去掉if(strcmp(a,b)==0) printf("YES\n");else if((a[0]=='+'&&b[0]=='-')||(a[0]=='-'&&b[0]=='+'))//符号不一样的情况 printf("NO\n");else if((a[0]=='+'&&b[0]=='+')||(a[0]=='-'&&b[0]=='-')){//符号一样的情况 for(i=1;i<lena;i++){if(a[i]=='0')a[i]='.';if(a[i]!='0')break;}k=l=0;for(i=1;i<lena;i++){if(a[i]!='.') c[k++]=a[i];}//把前边的没用的0去掉for(i=1;i<lenb;i++){if(b[i]=='0')b[i]='.';if(b[i]!='0')break;}for(i=1;i<lenb;i++){if(b[i]!='.')d[l++]=b[i];}//把前边没用的0去掉 if(strcmp(c,d)==0) printf("YES\n");}else if((a[0]=='-'&&(b[0]!='+'&&b[0]!='-'))||(b[0]=='-'&&(a[0]!='+'&&a[0]!='-')))//一个是负号一个没符号的情况 printf("NO\n");else{//一个是正号一个没符号,和都没有符号的情况 k=l=0;for(i=0;i<lena;i++){if(a[i]=='+')a[i]='.';else if(a[i]=='0')a[i]='.';elsebreak;}for(i=0;i<lena;i++)if(a[i]!='.')c[k++]=a[i];for(i=0;i<lenb;i++){if(b[i]=='+')b[i]='.';else if(b[i]=='0')b[i]='.';else break;}for(i=0;i<lenb;i++)if(b[i]!='.')d[l++]=b[i];if(strcmp(c,d)==0)printf("YES\n");else printf("NO\n");}}return 0;}//大神代码:#include <stdio.h>#include <string.h>char a[150000],b[150000];void f(char *s){int lens;lens=strlen(s);if(strchr(s,'.')!=NULL){while(s[--lens]=='0') ;if(s[lens]=='.') lens--;s[lens+1]='\0';}}int main(){while(scanf("%s%s",a,b)==2){f(a);f(b);if(strcmp(a,b)==0) printf("YES\n");else printf("NO\n");}return 0;} 



 


1 0
原创粉丝点击