A == B ?
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 102128 Accepted Submission(s): 16260
Problem Description
Give you two numbers A and B, if A is equal to B, you should print "YES", or print "NO".
Input
each test case contains two numbers A and B.
Output
for each case, if A is equal to B, you should print "YES", or print "NO".
Sample Input
1 2 2 2 3 3 4 3
Sample Output
NO YES YES NO
Author
8600 && xhd
Source
一些数据:
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
YES
00000000000000000002222 2222
YES
200 200000
NO
0.00002 0.000020000000000000000000000000000000
YES
00000000000000000000.00002 0.0000200000
YES
0022000 0000000000022000
YES
-0022.00200 -000000000000022.002000000000000000000
YES
+0.00 0.000000000000000
YES
000000000 0000000000000
YES
000001.00000 1
YES
-0001.000 0001
NO
-0 0
YES
ac代码:
// author: Feynman1999
#include<iostream>
#include<cstring>
using namespace std;
char a1[100010];
char a2[100010];
int fun2(char *a,int len){
int flag=0;
for(int i=0;i<len;++i)
if(a[i]=='0'||a[i]=='.') flag++;
if(flag==len) return 1;
else return 0;
}
int index(char *a,int len)//判断是否为小数
{
for(int i=0;i<len;++i)
if(a[i]=='.') return 1;
return 0;
}
char fun(char *a,int & len)//符号问题
{
if(a[0]=='-'){
for(int i=1;i<len;++i){
a[i-1]=a[i];
}
len--;
if(fun2(a,len)==1) return'+';
else return '-';
}
else if(a[0]=='+'){
for(int i=1;i<len;++i){
a[i-1]=a[i];
}
len--;
return '+';
}
return '+';
}
void front_0(char *a,int & len)//处理前导零
{
int t=0;
int temp;
temp=len;
while(a[t]=='0'&&a[t+1]!='.'&&len>0)
{
t++;
len--;
}
int j=0;
for(int i=t;i<temp;++i,++j){
a[j]=a[i];
}
a[j]='\0';
}
void back_0(char *a,int & len)//处理后续零
{
int t=len-1;
while(a[t]=='0')
{
t--;
len--;
}
a[t+1]='\0';
}
int main()
{
int index1,index2;
index1=index2=0;
int len1,len2;
char c1,c2;
while(cin>>a1>>a2)
{
len1=strlen(a1);
len2=strlen(a2);
index1=index(a1,len1);
index2=index(a2,len2);
c1=fun(a1,len1);
c2=fun(a2,len2);
if(index1!=index2)
{
if(fun2(a1,len1)==1&&fun2(a2,len2)==1) cout<<"YES"<<endl;
else{
front_0(a1,len1);
front_0(a2,len2);
back_0(a1,len1);
back_0(a2,len2);
int len3;
len3=len1<len2?len1:len2;
if(strncmp(a1,a2,len3)==0&&c1==c2) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
else if(index1==0){
front_0(a1,len1);
front_0(a2,len2);
if(strcmp(a1,a2)==0&&c1==c2) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
else if(index1==1){
front_0(a1,len1);
front_0(a2,len2);
back_0(a1,len1);
back_0(a2,len2);
if(strcmp(a1,a2)==0&&c1==c2) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}