• nyoj_524_A-B Problem_201312012035


    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
    来源
    hdu改编
      1 #include <stdio.h>
      2 #include <string.h>
      3 #define MAX 100000
      4 
      5 char str1[MAX+10],str2[MAX+10];
      6 int a1[MAX+10],a2[MAX+10],b1[MAX+10],b2[MAX+10];
      7 
      8 int bijiao(char *str1,char *str2)
      9 {
     10     int len1,len2;
     11         int i,j,k,t;       
     12         for(i=0;i<MAX+10;i++)
     13         a1[i]=a2[i]=b1[i]=b2[i]=0;
     14         len1=strlen(str1);
     15         for(i=0;i<len1;i++)
     16         if(str1[i]=='.')
     17         {t=i;break;}
     18         if(i>=len1)
     19         t=len1;
     20         for(j=0,i=t-1;i>=0;i--)
     21         a1[j++]=str1[i]-'0';
     22         for(j=0,i=t+1;i<len1;i++)
     23         a2[j++]=str1[i]-'0';
     24         len2=strlen(str2);
     25         for(i=0;i<len2;i++)
     26         if(str2[i]=='.')
     27         {t=i;break;}
     28         if(i>=len2)
     29         t=len2;
     30         for(j=0,i=t-1;i>=0;i--)
     31         b1[j++]=str2[i]-'0';
     32         for(j=0,i=t+1;i<len2;i++)
     33         b2[j++]=str2[i]-'0';
     34         if(len1==0&&len2==0)
     35         return 0;
     36         for(i=0;i<MAX;i++)
     37         {
     38             if(a1[i]!=0||a2[i]!=0||b1[i]!=0||b2[i]!=0)
     39             break;
     40         }
     41         if(i>=MAX)
     42         return 2;
     43         for(i=0;i<MAX;i++)
     44         {
     45             if(a1[i]!=b1[i])
     46             {
     47                 k=0;
     48                 break;
     49             }
     50         }
     51         if(i>=MAX)
     52         {
     53             for(i=0;i<MAX;i++)
     54             {
     55                 if(a2[i]!=b2[i])
     56                 {
     57                     k=0;
     58                     break;
     59                 }
     60             }
     61             if(i>=MAX)
     62             k=1;
     63         }
     64         return k;
     65         //puts(str1);
     66         //puts(str2);
     67 }
     68 int main()
     69 {
     70     while(scanf("%s%s",str1,str2)!=EOF)
     71     {
     72         int t=0,k;
     73         //gets(str2);
     74         //getchar();
     75         if((str1[0]>='0'&&str1[0]<='9')&&(str2[0]>='0'&&str2[0]<='9'))
     76         k=bijiao(str1,str2);
     77         else if((str1[0]>='0'&&str1[0]<='9')&&(str2[0]=='+'))
     78         k=bijiao(str1,str2+1);
     79         else if((str2[0]>='0'&&str2[0]<='9')&&(str1[0]=='+'))
     80         k=bijiao(str1+1,str2);
     81         else if(str1[0]==str2[0])
     82         k=bijiao(str1+1,str2+1);
     83         else if(str1[0]=='.'||str2[0]=='.')
     84         k=bijiao(str1,str2);
     85         else
     86         {
     87             t=bijiao(str1+1,str2+1);
     88             if(t==2)
     89             k=1;
     90             else
     91             k=0;
     92         }
     93         if(k)
     94         printf("YES
    ");
     95         else
     96         printf("NO
    ");
     97     }
     98     return 0;
     99 }
    100 //没考虑 (.1和 0.1)这组数据 

    /* 测试数据

    0 -0

    0 +0

    123.123 +00123.12300

    100.00 100

    .1 0.1

    000.000 0

    123456789123456789

    123456789123456789

    1 1

    000001000. 1000

    +0 -000.000

    .0 0

    .0 0.

    结果全是YES

    这些测试数据如果过了基本差不多可以AC了 这都是WA出来的。。。。 */

    和hdu2054类似,这题的测试数据更严格

  • 相关阅读:
    遇到的面试题目
    获取本机IP_考虑多网卡的情况
    C#发送电子邮件
    C#获取局域网中的所有正在使用的IP地址
    C#获取本机IP且过滤非真实网卡(如虚拟机网卡)
    C#获取本机的MAC地址
    C#获取本机磁盘信息
    C#获得系统打开的端口和状态
    C#通过编程方式实现Ping
    千万不要使用xfce和KDE版Manjaro Linux--之荒谬言论
  • 原文地址:https://www.cnblogs.com/xl1027515989/p/3452950.html
Copyright © 2020-2023  润新知