PAT甲1060 Are They Equal(25 分)

#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <string>
#include <stack>
#include <math.h>
#include <iostream>
using namespace std;

struct f
{
    char c[110];
    int exp;
}A,B;

void change(string a,f &A,int sign)
{

    while(a.length()>0&&a[0]=='0')
    {
        a.erase(a.begin());
    }
    int exp=0,len=0;
    A.c[len++]='0';
    A.c[len++]='.';
    if(a.length()==0)
    {
        for(int i=0;i<sign;i++)
        {
            A.c[len++]='0';
        }
        A.exp=exp;
        A.c[len++]='\0';
        return;
    }
    if(a[0]=='.')
    {
        a.erase(a.begin());
        while(a.length()>0&&a[0]=='0')
        {
            a.erase(a.begin());
            exp--;
        }
        if(a.length()==0)
        {
            A.exp=0;
            for(int i=0;i<sign;i++)
            {
                A.c[len++]='0';
            }
             A.c[len++]='\0';
        }
        else
        {
            int step;
            for(step=0;step<sign&&step<a.length();step++)
            {
                A.c[len++]=a[step];
            }
            while(step<sign)
            {
                A.c[len++]='0';
                step++;
            }
            A.c[len++]='\0';
            A.exp=exp;
        }
    }
    else
    {
        for(int i=0;i<a.length();i++)
        {
            if(a[i]!='.')
            {
                exp++;
            }
            else
            {
                a.erase(a.begin()+i);
                break;
            }
        }
        int step;
        for(step=0;step<a.length()&&step<sign;step++)
        {
            A.c[len++]=a[step];
        }
        while(step<sign)
        {
            A.c[len++]='0';
            step++;
        }
        A.c[len++]='\0';
        A.exp=exp;
    }
}

int main()
{
    string a,b;
    int sign;
    scanf("%d",&sign);
    cin>>a>>b;
    change(a,A,sign);
    change(b,B,sign);
    if(strcmp(A.c,B.c)==0&&A.exp==B.exp)
    {
        printf("YES");
        printf(" %s*10^%d",A.c,A.exp);
    }
    else
    {
        printf("NO");
        printf(" %s*10^%d",A.c,A.exp);
        printf(" %s*10^%d",B.c,B.exp);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/yhy489275918/article/details/82084187