当前位置: 代码迷 >> 综合 >> NYOJ - A-B Problem
  详细解决方案

NYOJ - A-B Problem

热度:82   发布时间:2024-01-20 18:06:44.0

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
11.0
2.0
样例输出
YES
NO
#include <stdio.h>
#include <string.h>char a[1000],b[1000];int find_point(char s[])       // 判断是否为小数 
{for(int i = 0;i < strlen(s); i++){if(s[i] == '.')return 1;}return 0;
}void del_zero(char s[])     
{int len,i,count;if(find_point(s))       {   len = strlen(s);for(i = len -1; i >= 0; i--)     // 除去小数后面的0 {if(s[i] == '0')s[i] = '\0';elsebreak;}len = strlen(s) -1;if(s[len] == '.')s[len] = '\0';}if(s[0] == '+')            // 符号为正数情况 {len = strlen(s);count = 1;for(i = 1; i < len; i++){if(s[i] == '0'&&s[i+1] != '\0')count++;elsebreak;}for(i = 0; i < len - count; i++){s[i] = s[i+count];}s[i] = '\0';}else if(s[0] == '-')     //符号为负数的情况 {len = strlen(s);count = 0;for(i = 1; i < len; i++){if(s[i] == '0'&&s[i+1] != '\0')count++;elsebreak;}for(i = 1; i < len -count; i++){s[i] = s[i+count];}s[i] = '\0';if(s[0] == '-'&&s[1] == '0'){s[0] = '0';s[1] = '\0';}}else                       //没有符号的情况 {len = strlen(s);count = 0;for(i = 0; i < len; i++){if(s[i] == '0'&&s[i+1] != '\0')count++;elsebreak;}for(i = 0; i < len - count; i++){s[i] = s[i+count];}s[i] = '\0';}
}
int main()
{   while(scanf("%s%s",&a,&b) != EOF){del_zero(a);del_zero(b);printf("%s\n",strcmp(a,b)?"NO":"YES");}return 0;
}
  相关解决方案