您的位置:首页 > 其它

HDU2054---A==B?

2017-02-05 08:07 204 查看
#include <stdio.h>
#include <string.h>
const int MAX = 100010;//取太小过不了
int main()
{
char a[MAX]={},b[MAX]={};
while(~scanf("%s %s",a,b)){
int i=0,j=0,f=1;
int p=strlen(a),q=strlen(b);
int flag = 0;//标记是否含有小数点

for(i=0;i<p;i++)
if(a[i]=='.')
{
flag = 1;
break;
}
i = 0;
p--;
while(a[i]=='0')//A中从前往后找到第一个非零位置i
i++;
if(flag)//A中如果存在小数点,从后往前找到第一个非零位置
{
while(a[p]=='0'){
p--;
}
}
if(a[p]=='.')//A中如果第一个非零位置是“.”,再前移一位
p--;
/*同A*/
flag = 0;
for(j=0;j<q;j++)
if(b[j]=='.')
{
flag = 1;
break;
}
j = 0;
q--;
while(b[j]=='0')
j++;
if(flag)
{
while(b[q]=='0'){
q--;
}
}
if(b[q]=='.')
q--;
if(p-i!=q-j)//如果A和B的字符长度不同,则A!=B,标记f = 0
f=0;
for(;i<=p&&j<=q;i++,j++)
{
if(a[i]!=b[j])//如果A和B相应位置的字符不同,则A!=B,标记f = 0
{
f=0;
break;
}
}
if(f)
printf("YES\n");
else
printf("NO\n");

memset(a,0,MAX*sizeof(char));
memset(b,0,MAX*sizeof(char));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: