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改编
-
有多组测试数据。每组数据包括两行,分别代表A和B。
- 代码:
-
#include
#include
using namespace std;
int main()
{
char s[2][110]={0},*p[2],r;
int i,j,k,n[2];
while(cin>>s[0]>>s[1])
{
for(i=0;i<2;i++)
{
j=0; //指示整数部分第一个非零数的位置
n[i]=1; //1表示是正数,0表示是负数
r=s[i][0];
if(r=='+')
{
j=1; //有符号位
}
elseif(r=='-')
{
j=1; //有符号位
n[i]=-1; //表示该数为负数
}
while(s[i][j]=='0')j++; //找到第一个非零位
p[i]=&s[i][j];
if(strstr(s[i],"."))
{
k=strlen(s[i])-1;
while(s[i][k]=='0')s[i][k--]=0; //从小数后半部分开始寻找第一个非零位,并将为0的赋值为‘\0’
if(s[i][k]=='.')
{
s[i][k]=0;
}
}
}
r=0;
if(!p[0][0]&&!p[1][0])
r=1;
elseif(!strcmp(p[0],p[1])&&n[0]*n[1]>0)
r=1;
if(r) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}