4 条题解

  • 0
    @ 2023-11-25 10:36:37
    #define mian main
    #define MAXN 10500 
    using namespace std;
    string a,b;
    int na[MAXN], nb[MAXN], ans[MAXN]; 
    bool pd;
    int main(){
        cin >> a >> b;
    	if((a < b && a.size() == b.size()) || a.size() < b.size()){
    		swap(a, b);
    		pd = true;
    	}
        for(int i = a.size(); i > 0; i --)na[i] = a[a.size() - i] - '0';
        for(int i = b.size(); i > 0; i --)nb[i] = b[b.size() - i] - '0';
        int maxl = max(a.size(), b.size());
    	for(int i = 1; i <= maxl; i ++)
    	{
    		if(na[i] < nb[i])
    		{
    			na[i + 1] --;
    			na[i] += 10;
    		}
    		ans[i] = na[i] - nb[i];
    	}
    	
    	while(ans[maxl] == 0)maxl --;
    	
    	if(pd == true)cout << "-"; 
    	
    	for(int i = maxl; i > 0; i --)cout << ans[i];
    	if(maxl < 1)cout << "0";
        return 0;
    }
    

    来个精简的

  • 0
    @ 2023-8-18 1:19:19
    #include<bits/stdc++.h>
    using namespace std;
    const int MAXN=10086+10;
    char sa[MAXN],sb[MAXN],tmp[MAXN];
    int a[MAXN],b[MAXN],c[MAXN];
    int main(){
        cin>>sa>>sb;
        int la=strlen(sa);
        int lb=strlen(sb);
      
        if(la<lb || ( (la==lb) && strcmp(sa,sb)<0 ) ){
            strcpy(tmp,sa);
            strcpy(sa,sb);
            strcpy(sb,tmp);
            swap(la,lb);
            cout<<"-";
        }
    
        for(int i=0;i<la;i++) a[la-i]=sa[i]-'0';
        for(int i=0;i<lb;i++) b[lb-i]=sb[i]-'0';
        int lc=la>lb?la:lb;
        for(int i=1;i<=lc;i++) {
            if(a[i]<b[i]){
               a[i]+=10;
               a[i+1]--;
            }
            c[i]=a[i]-b[i];
        }
    
        while(c[lc]==0) lc--;
    
        for(int i=lc;i>=1;i--) cout<<c[i];
    
        return 0;
    }
    
    • 0
      @ 2023-5-5 12:25:19
      # include <bits/stdc++.h>
      using namespace std;
      string s1, s2, temp;
      const int N = 1010;
      int a[N], b[N], c[N];
      void refine(string s, int a[]) {
      	int len = s.size();
      	int index = 0;
      	for (int i = len - 1; i >= 0; i--) {
      		a[index] = s[i] - '0';
      		index++;
      	}	
      }
      void sub(int a[], int b[], int  c[]) {
      	for (int i = 0; i < N - 1; i++) {
      		int num = a[i] - b[i];
      		if (num < 0) {
      			a[i + 1]--;
      			num += 10;
      		}
      		c[i] = num;
      	}
      }
      void print(int c[]) {
      	int flag = false;
      	for (int i = N - 1; i >= 0; i--) {
      		if (c[i] != 0) {
      			flag = true;
      		}
      		if (flag || i == 0) {
      			cout << c[i];		
      		}
      	}	
      }
      bool cmp(string s1, string s2) {
      	int len1 = s1.size();
      	int len2 = s2.size();
      	if (len1 != len2) {
      		return len1 < len2;
      	}
      	for (int i = 0; i < len1; i++) {
      		if (s1[i] != s2[i]) {
      			return s1[i] < s2[i];
      		}
      	}
      	return false;
      }
      int main() {
      	cin >> s1 >> s2;
      	if (cmp(s1, s2)) {
      		temp = s1;
      		s1 = s2;
      		s2 = temp;
      		printf("-");
      	}
      	refine(s1, a);
      	refine(s2, b);
      	sub(a, b, c);
      	print(c);
      	return 0; 
      }
      
      • 0
        @ 2023-4-6 13:10:03
        a = input()
        b = input()
        print(int(a) - int(b))
        
        • 1

        信息

        ID
        1100
        时间
        1000ms
        内存
        125MiB
        难度
        2
        标签
        递交数
        75
        已通过
        18
        上传者