hdu 2054 A == B ?
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 2
2 2
3 3
4 3
Sample Output
NO
YES
YES
NO題目大意:看a是不是等於b
思路:分很多種情況,有符號無符號,或者0.1 和 .1是相等的,還要注意沒有用的0
我把前邊後邊沒用的0都去掉,再分情況判斷符號的問題,小數點的問題,代碼
好長,有個很短的代碼,也過了,但是01和1,+1和1,等很多情況測試都不對,但是
居然對了!,,,不太理解。附上大神超短代碼。
2014,11,9
這題真煩人!
#include
#include
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=0;j--){
if(a[j]!='0'){
a[j+1]='\0';
break;
}
}
if(a[j]=='.')
a[j]='\0';
break;
}
}//把小數後邊沒用的0去掉
for(i=0;i=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
#include
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;
}