HDU 2054 A == B ?

来源:互联网 发布:大淘客和淘宝联盟区别 编辑:程序博客网 时间:2024/05/18 00:46



A == B ?

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


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





给你两个数字判断是否相等  并未给出数字的位数限制  所以可用字符串来处理 
应注意  在处理字符串时 要去掉前导零和后缀零 同时还要注意数字前面的“+”和“-”
代码略长 思路简单 



AC代码:
#include <stdio.h>  #include <string.h>  void jinghua(char *a){      int n=strlen(a);      int index1,index2;      int flag=1,flag1;      for (int i=0;i<n&&flag;i++){//判断有无小数点           if (a[i]=='.'){              index1=i;              flag=0;          }                    }      int i,j;      if (!flag){//数字带小数点           flag1=1;          if (a[0]=='-'||a[0]=='+'){//数字前有“+”或“-”号                             for ( i=1;i<=index1&&flag1;i++){//去掉前导0                   if (a[i]!='0'){                      index2=i;                      flag1=0;                  }                                    }              if (a[index2]=='.')                  index2=index2-1;              for ( i=1,j=index2;i<n-index2;i++,j++){                      a[i]=a[j];                  }          }           else{//数字前无“+”或“-”号              flag1=1;              for ( i=0;i<=index1&&flag1;i++){                  if (a[i]!='0'){                      index2=i;                      flag1=0;                  }                     }              if (a[index2]=='.')                  index2=index2-1;              for ( i=0,j=index2;i<n-index2;i++,j++){                      a[i]=a[j];                  }          }          flag1=1;          a[i]='\0';          for (j=i-1;a[j]!='.'&&flag1;j--){//去掉后缀 0               if (a[j]=='0'){                  a[j]='\0';                  flag1=1;                  }              else                  flag1=0;          }          if (flag1){              a[j]='\0';          }      }      else{// 数字不带小数点           flag1=1;          if (a[0]=='-'||a[0]=='+'){// 数字前有“+”或“-”号              for ( i=1;i<n&&flag1;i++){//去掉前导0                   if (a[i]!='0'){                      flag1=0;                      index2=i;                  }                     }              if (index2!=1){                  for ( i=1,j=index2;i<n-index2;i++,j++){                      a[i]=a[j];                  }              }              if (index2!=1)                  a[i]='\0';          }          else{//数字前无“+”或“-”号              flag1=1;              for ( i=0;i<n&&flag1;i++){//去掉前导0                   if (a[i]!='0'){                      flag1=0;                      index2=i;                  }                     }              if (index2!=0){                  for ( i=0,j=index2;i<n-index2;i++,j++){                      a[i]=a[j];                  }              }              if (index2!=0)                  a[i]='\0';          }                    }  }  int main (){      char a[100000],b[100000];      while (~scanf ("%s %s",a,b)){          jinghua(a);          jinghua(b);          if (strcmp(a,"-0")==0&&strcmp(b,"+0")==0||strcmp(a,"+0")==0&&strcmp(b,"-0")==0)              printf ("YES\n");          else if (strcmp(a,b)==0)              printf ("YES\n");          else              printf ("NO\n");      }      return 0;  }   



0 0
原创粉丝点击