hdu 2045
这题不难,没有涉及算法。主要是熟练了一下指针。主要思想就是,设定一个规范模式,然后朝着这个规范模式化解,代码可以优化,有许多冗余 的地方。
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1000000;
char sa[maxn],sb[maxn];
int main()
{
while(scanf("%s %s",sa,sb)!=EOF)
{
getchar();
int len1=strlen(sa),len2=strlen(sb);
char * a=sa;
char * b=sb;
char * ta=a+len1-1;
char * tb=b+len2-1;
if(a[0]=='-'||b[0]=='-')
{
if(a[0]!=b[0])
{
cout<<"NO"<<endl;
continue;
}
else
{
a++;
b++;
}
}
while(*a=='0') a++;
while(*b=='0') b++;
if(*a=='.'||*a=='\0')
{
a--;
*a='0';
}
if(*b=='.'||*b=='\0')
{
b--;
*b='0';
}
char * aa=a;
char * bb=b;
int flag1=0,flag2=0;
while(*aa!='\0')
{
if(*aa=='.')
{
flag1=1;
break;
}
aa++;
}
while(*bb!='\0')
{
if(*bb=='.')
{
flag2=1;
break;
}
bb++;
}
if(flag1)
{
while(*ta=='0'&&*ta!='.')
ta--;
if(*ta=='.') *ta='\0';
else *(ta+1)='\0';
}
if(flag2)
{
while(*tb=='0'&&*tb!='.') tb--;
if(*tb=='.') *tb='\0';
else *(tb+1)='\0';
}
if(strcmp(a,b)==0) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}

浙公网安备 33010602011771号