hdu2054A == B ?

在不考虑正数前加‘+’的情况下,也能ac。。。不过考虑上更全面。。。

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 
char a[100000],b[100000],c[100000],d[100000];
void deal(char *s,int k,int len)
{
  int i,j;
  for(i=0;i<len-k;i++)   
    s[i]=s[i+k]; 
  for(i=len-k;i<len;i++)    
    s[i]=0; 
  len-=k; 
  if(strchr(s,'.')){         //存在小数点 
    for(i=len-1;i>=0;i--){ 
      if(s[i]=='0')  s[i]=0;
      else           break; 
    } 
    if(s[i]=='.')    s[i]=0;             
  } 
} 
int main()
{
 int i,j,len1,len2,flag,k1,k2; 
 while(scanf("%s %s",a,b)!=EOF){
    len1=strlen(a);
    len2=strlen(b);
    flag=1;                                    //既要考虑正负,还要考虑前导0,还要考虑小数 
    for(i=0;i<len1;i++)
       if(a[i]>'0'&&a[i]<='9')   break;                
    k1=i; 
    for(i=0;i<len2;i++) 
       if(b[i]>'0'&&b[i]<='9')   break;     
    k2=i;
    strcpy(c,a);   strcpy(d,b); 
    deal(c,k1,len1);
    deal(d,k2,len2);
    if(strcmp(c,d)==0)   flag=1;                 //在不考虑符号的情况下相等
    else                 flag=0; 
   // printf("%s %s\n%d %d %d\n",c,d,k1,k2,flag); 
    if(flag){                                       //判断正负号
      if((k1==0&&k2>0&&b[k2-1]=='-')||(k1>0&&a[k1-1]=='-'&&k2==0))  flag=0;
      else if((k1&&k2&&a[k1-1]=='-'&&b[k2-1]!='-')||(k1&&k2&&a[k1-1]!='-'&&b[k2-1]=='-'))   flag=0;
    }   
    if(flag)   printf("YES\n");
    else       printf("NO\n"); 
    memset(a,0,sizeof(a));
    memset(b,0,sizeof(b)); 
 } 
 //system("pause"); 
 return 0;    
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值