• NYOJ524AB Problem


    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 Code
     1  
     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         

    -------------------------------------------

    作者:赵杰迪

    -------------------------------------------

  • 相关阅读:
    Linux w命令
    01.drf文档及外键字段反序列化
    redis的参数解释
    redis集群复制和故障转移
    codis原理及部署_01
    redis 主从哨兵02
    redis 主从哨兵01
    redis持久化
    redis python操作
    redis cluster
  • 原文地址:https://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi1992_2012_10_26000.html
Copyright © 2020-2023  润新知