水一篇oj题解
emmm 就模拟
就不断的分类讨论,hhh
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int Max = 109;
char a[Max],b[Max];
int main()
{
while(~scanf("%s %s",a,b))
{
int x1,x2;
bool f1=0,f2=0;
for(int i=0;i<strlen(a);i++) if(a[i]>='1'&&a[i]<='9') {
f1=1;break;
}
for(int i=0;i<strlen(b);i++) if(b[i]>='1'&&b[i]<='9') {
f2=1;break;
}
if(f1!=1&&f2!=1) cout << "yes\n"; // 0 和 0
else if(f1!=1||f2!=1) cout << "no\n";// 一个是0 一个不是0
else// 俩都不是0
{
if(a[0]=='-'&&b[0]!='-'||a[0]!='-'&&b[0]=='0') cout << "no\n";// 排除异号
else // 一定同号
{
bool f1 = 0, f2 = 0;
for(int i = 0; i < strlen(a); ++i)
{
if(a[i] == '.') f1 = 1;
else if(a[i] >= '1' && a[i] <= '9' && f1){
f2=1;break;
}
}
bool f3 = 0, f4 = 0;
for(int i = 0; i < strlen(b); ++i)
{
if(b[i] == '.') f3 = 1;
else if(b[i]>='1' && b[i] <= '9' && f3) {
f4 = 1; break;
}
}
if(f2 + f4 == 1) cout << "no\n";// 一个小数,一个整数
else if(!f2 && !f4) // 俩整数
{
int i , j;
i = j = 0;
bool f = 1;
while(a[i] == '-' || a[i] == '0') i++;
while(b[j] == '-' || b[j] == '0') j++;
for(; i < strlen(a) && j < strlen(b); ++i, ++j)
{
if(a[i] != b[j]){
f = 0;break;
}
}
if(f) cout << "yes\n"; else cout << "no\n";
}
else // 俩小数
{
int i , j;
i = j = 0;
bool f = 1;
while(a[i] == '-' || a[i] == '0') i++;
while(b[j] == '-' || b[j] == '0') j++;
for(; a[i] != '.' && b[j] != '.'; ++i, ++j)
{
if(a[i] != b[j]){
f = 0;break;
}
}
// 目前整数部分相同了
i++,j++;
int x = strlen(a) - 1, y = strlen(b) - 1;
while(a[x] == '0') --x;
while(b[y] == '0') --y;// 把后导0删去
bool ff = 1;
for(; i <= x && j <= y; ++i, ++j)
{
if(a[i] != b[j]) {
ff = 0;break;
}
}
if(f && ff) cout << "yes\n";
else cout << "no\n";
}
}
}
}
return 0;
}