sdnu oj 1301

水一篇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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值