只得20分,求助!
查看原帖
只得20分,求助!
553771
luoyixin2009楼主2022/1/15 11:47

8个点RE

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
long long compare(string x,string y)//比较两个数x,y的大小,x>y,则返回 1,x=y,则返回 0,x<y 则返回-1 
{
    if (x.length()>y.length())
        return 1;
    else if (x.length()<y.length())
           return -1;
    else
    {
        for (int i=0;x[i];i++)
        {
            if (x[i]>y[i])
                return 1;

            if (x[i]<y[i])
                return -1;
        }
    }
    return 0;
}
long long ax[205],bx[205],cx[205]; // ax数组保存 被减数,bx数组保存减数,cx数组保存结果
int main()
{
    string a,b;
    long long i,lena,lenb,lenc;
    cin>>a;
    cin>>b;
    lena=a.length();
    lenb=b.length();
    lenc=0;
    memset(ax,0,sizeof(ax)); //下面是对三个数组初始化的命令
    memset(bx,0,sizeof(bx));
    memset(cx,0,sizeof(cx));   
  for (i=1; i<=lena; i++)
    {
        ax[i]=a[lena-i]-'0';  
    }
    for (i=1; i<=lenb; i++)
    {
        bx[i]=b[lenb-i]-'0';
    }
    if (compare(a,b)==1)
    {
        for (i=1;i<=lena;i++)
        {
            cx[i]=ax[i]-bx[i];
            if (cx[i]<0)
            {
                cx[i]=10+cx[i];
                ax[i+1]--;
            }
        }
        lenc=lena;
        while((cx[lenc]==0)&&lenc>1)
            lenc--;

        for (i=lenc;i>=1;i--)
            printf("%d",cx[i]);
    }
    if (compare(a,b)==0)
       {
          printf("0");
          return 0;
       }
    if (compare(a,b)==-1)
      {
        printf("-");
        for (i=1;i<=lenb;i++)
        {
            cx[i]=bx[i]-ax[i];
            if (cx[i]<0)
            {
                cx[i]=10+cx[i];
                bx[i+1]--;
            }
        }
        lenc=lenb;
        while((cx[lenc]==0)&&lenc>1)
            lenc--;
        for (i=lenc;i>=1;i--)
            printf("%d",cx[i]);
    }
    return 0;
}
2022/1/15 11:47
加载中...