1 solutions

  • 0
    @ 2024-12-10 23:27:11

    C++ :

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    struct node
    {
        int FF,len,a[410];
        node()
        {
           FF=len=0;
           memset(a,0,sizeof(a));
        }
    };
    char st[401];
    int mymax(int x,int y){return x>y?x:y;}
    bool Pd(node a,node b)
    {
       int i;
       int len;
       len=mymax(a.len,b.len);
       for(i=len;i>=1;i--)
       {
          if(a.a[i]>b.a[i]) return true;//A>B
          if(a.a[i]<b.a[i]) return false;//A<B 
       }
       return true;//A==B
    }
    node minus11(node n1,node n2)
    {
         int i,j;
         node no;
         if(Pd(n1,n2)==true)//n1>=n2 
         {
            no.FF=1;
            no.len=n1.len;
            for(i=1;i<=no.len;i++) no.a[i]=n1.a[i]-n2.a[i];
         }
         else
         {
             no.FF=-1;
             no.len=n2.len;
             for(i=1;i<=no.len;i++) no.a[i]=n2.a[i]-n1.a[i];
         } 
         for(i=1;i<=no.len;i++)
         {
            if(no.a[i]<0) 
            {
              no.a[i+1]-=1;
              no.a[i]+=10;
            }
         }
         while(no.a[no.len]==0) no.len--;
         return no;
    } 
    int main()
    {
        //freopen("a.in","r",stdin);
        //freopen("a.out","w",stdout);
        int i,j;
        node ans,ni,nj;
        scanf("%s",st+1); ni.len=strlen(st+1); ni.FF=1;
        for(i=1;i<=ni.len;i++) ni.a[i]=st[ni.len-i+1]-'0';
        scanf("%s",st+1); nj.len=strlen(st+1); nj.FF=1;
        for(i=1;i<=nj.len;i++) nj.a[i]=st[nj.len-i+1]-'0';
        ans=minus11(ni,nj);
        if(ans.FF==-1) 
        {
           printf("-");
           for(i=ans.len;i>=1;i--) printf("%d",ans.a[i]);
        }
        if(ans.FF==1)
        {
           for(i=ans.len;i>=1;i--) printf("%d",ans.a[i]);
        }
        printf("\n");
        return 0;
    }
    
    
    • 1

    高精度入门第2题:高精度减法+比较函数A-B

    Information

    ID
    600
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By