2 条题解

  • 0

    #include <iostream> #include <cstring> using namespace std; #define max 100000000 char a[max],b[max],temp[max]; int A[max],B[max],C[max],lena,lenb; int main(){ cin>>a; cin>>b; lena=strlen(a); lenb=strlen(b); if(lena<lenb||strcmp(a,b)<0&&lena==lenb) { cout<<"-"; strcpy(temp,a); strcpy(a,b); strcpy(b,temp); lena=strlen(a); lenb=strlen(b); } for(int i=0;i<lena;++i) A[i]=a[lena-1-i]-'0'; for(int i=0;i<lenb;++i) B[i]=b[lenb-1-i]-'0'; for(int i=0;i<lena;++i) { if(A[i]<B[i]) { A[i]+=10; A[i+1]--; C[i]=A[i]-B[i]; } else { C[i]=A[i]-B[i]; } } for(int i=lena-1;i>=0;--i) { if(C[i]==0&&lena>1) lena--; else break; } for(int i=lena-1;i>=0;--i) cout<<C[i]; return 0;

    }

    • 0
      @ 2023-3-18 22:54:55
      #include <bits/stdc++.h>
      using namespace std;
      const int MAXN=1e4+4;
      char s1[MAXN]={},s2[MAXN]={},tmp[MAXN]={};
      int a[MAXN]={},b[MAXN]={},c[MAXN]={};
      int main() {
          cin>>s1>>s2;
          int lena=strlen(s1),lenb=strlen(s2);
          if((lena<lenb)||(lena==lenb&&strcmp(s1,s2)<0))
          {
              printf("-");
              strcpy(tmp, s1);
              strcpy(s1, s2);
              strcpy(s2, tmp);
              lena=strlen(s1);
              lenb=strlen(s2);
          }
          for(int i=0;i<lena;i++)a[i]=s1[lena-i-1]-'0';
          for(int i=0;i<lenb;i++)b[i]=s2[lenb-i-1]-'0';
          for(int i=0;i<lena;i++)
          {
              if(a[i]<b[i])
              {
                  a[i+1]--;
                  a[i]+=10;
              }
              c[i]=a[i]-b[i];
          }
          for(int i=lena-1; i>=0; i--)
          {
              if(0==c[i]&&lena>1)lena--;
              else break;
          }
          for(int i=lena-1;i>=0;i--)cout<<c[i];
          return 0;
      }
      
      
      • 1

      信息

      ID
      1677
      时间
      1000ms
      内存
      256MiB
      难度
      5
      标签
      递交数
      150
      已通过
      53
      上传者