2 条题解

  • 0
    @ 2026-2-2 14:36:18

    scy视频(推荐)

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
        int a[510],len;
        node()
        {
           len=1;
           memset(a,0,sizeof(a));
        }
    };
    
    int cmp(node n1,node n2)
    {
       if(n1.len>n2.len) return 1;
       if(n1.len<n2.len) return -1;
       for(int i=n1.len;i>=1;i--)
       {
          if(n1.a[i]>n2.a[i]) return 1;//A>B
          if(n1.a[i]<n2.a[i]) return -1;//A<B 注:此处不能用else 
       }
       return 0;//A==B
    }
    
    node operator-(node n1,node n2)//默认n1比n2大 
    {
        node no;
        no.len=n1.len;
        
        for(int i=1;i<=no.len;i++) no.a[i]=n1.a[i]-n2.a[i];
     
        for(int i=1;i<=no.len;i++)if(no.a[i]<0)no.a[i+1]--,no.a[i]+=10;
      
        int i=no.len;
        while(no.a[i+1]>0)
        {
            i++;
            no.a[i+1]+=no.a[i]/10;
            no.a[i]%=10;
        }
        while( (no.a[i]==0) && (i>1)) i--;
        no.len=i;
        
        return no;
    } 
    int main()
    {
        node no,n1,n2;
        char st[511];
        scanf("%s",st+1); n1.len=strlen(st+1);
        for(int i=1;i<=n1.len;i++) n1.a[n1.len-i+1]=st[i]-'0';
         
        scanf("%s",st+1); n2.len=strlen(st+1);
        for(int i=1;i<=n2.len;i++) n2.a[n2.len-i+1]=st[i]-'0';
         
        if(cmp(n1,n2)>=0)  no=n1-n2;
        else   printf("-"),no=n2-n1;
     
        for(int i=no.len;i>=1;i--) printf("%d",no.a[i]);
        printf("\n");
        
        return 0;
    }
    
    • 1

    信息

    ID
    93
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    递交数
    610
    已通过
    110
    上传者