6 solutions

  • 2
    @ 2024-1-20 11:26:44
    #include<bits/stdc++.h>
    using namespace std;
    string a,b;//两个字符串存个输入值 
    int x[205],xx[205];//第一个数、第二个数 
    int xxx[205]={};//答案 
    void in(string a,int x[]){//将输入存进int数组里面 
    	int t=a.size();
    	for(int i=0;i<t;i++){
    		x[i]=a[i]-'0';//记得减‘0’ 
    	}
    }
    void turn(string &a){//反转字符串,千万记得取地址! 
    	string s="";
    	long t=a.size();
    	for(int i=t-1;i>=0;i--){
    		s+=a[i];
    	}
    	a=s;
    }
    void add(int a[],int b[],int c[]){//减 
    	for(int i=0;i<205;i++){
    		c[i]+=a[i]-b[i];
    		if(c[i]<0) c[i]+=10,c[i+1]--;//如果小于0这一位加10,下一位减1(借位 
    	}
    }
    void out(int a[]){//输出 
    	int t=204;
    	while(a[t]==0) t--;//排除前面的0 
    	for(int i=t;i>=0;i--){
    		if(!(a[i]>=0&&a[i]<=9)) continue;//保险,以防中间有乱码 
    		cout<<a[i];
    	}
    }
    int main(){
    	cin>>a>>b;
    	turn(a);
    	turn(b);
    	in(a,x);
    	in(b,xx);
    	add(x,xx,xxx);
    	out(xxx);
    	//调用即可 
    	return 0;
    }
    

    无需判断正负,数据没有

    • 1
      @ 2024-1-23 13:21:15
      #include<iostream>
      #include<string>
      #include<vector>
      using namespace std;
      string a;
      string b;
      int a1[201];
      int b1[201];
      int c1[201];
      int main(){
      	int k=0,h=0,s;
      	cin>>a>>b;
      	int r=max(a.size(),b.size());
      	for(int i=0;i<=r;i++){
      		a1[i]=0;
      		b1[i]=0;
      	}
      	for(int i=a.size()-1;i>=0;i--){
      		a1[k]=a[i]-'0';
      		k++;
      	}
      	for(int i=b.size()-1;i>=0;i--){
      		b1[h]=b[i]-'0';
      		h++;
      	}
      	for(int i=r-1;i>=0;i--){
      	    c1[i]=a1[i]-b1[i];
      	}
      	for(int i=0;i<r;i++){
      	if(c1[i]<0){
      		    c1[i]+=10;
      			c1[i+1]--;
      		}
      	}
      	
          for(int i=r;i>=0;i--){
              if(c1[i]!=0){
          	    s=i;
          	    break;
      	    }
          }
      	for(int i=s;i>=0;i--){
              cout<<c1[i];
      	}
      }
      
      • 1
        @ 2023-12-23 17:58:09
        #include <iostream>
        #include <cmath>
        using namespace std;
        string n,m;
        int x[10005],y[10005],z[10005];
        void s2big(string s,int a[]){
        	a[0]=s.size();
        	for(int i=1;i<=a[0];i++) a[i]=s[a[0]-i]-'0';
        }
        bool com(int x[],int y[]){
        	if(x[0]!=y[0]) return x[0]>y[0];
        	for(int i=x[0];i>=1;i++) if(x[i]!=y[i]) return x[i]>y[i];
        	return true;
        }
        void jian(int x[],int y[],int z[]){
        	z[0]=max(x[0],y[0]);
        	for(int i=1;i<=z[0];i++){
        		if(x[i]<y[i]){
        			x[i+1]--;
        			x[i]+=10;
        		}
        		z[i]=x[i]-y[i];
        	}
        	while(z[z[0]]==0&&z[0]>1) z[0]--;
        }
        void print(int s[]){
        	for(int i=s[0];i>=1;i--) cout<<s[i];
        	cout<<endl;
        }
        int main(){
        	cin>>n>>m;
        	s2big(n,x);
        	s2big(m,y);
        	if(!com(x,y)){
        		jian(y,x,z);
        		cout<<"-";
        	}
        	else jian(x,y,z);	
        	print(z);
        	return 0;
        }
        
        • 1
          @ 2023-10-24 19:31:28
          #include <bits/stdc++.h>
          using namespace std;
          int a[205],b[205],c[205];
          string s1,s2;
          int main(int argc, char **argv){
          	cin >> s1 >> s2;
          	int l1 = s1.length(),l2 = s2.length();
          	if(l1 < l2 || (l1 == l2 && s1 < s2)){	// 比较字符串
          		string tmp;
          		tmp = s1;
          		s1 = s2;
          		s2 = tmp;
          		cout << '-';
          	}
          	l1 = s1.length(),l2 = s2.length();	// 一定要记得更新长度
          	for (int i = 0;i < l1;i++){
          		a[l1 - i] = s1[i] - '0';
          	}
          	for (int i = 0;i < l2;i++){
          		b[l2 - i] = s2[i] - '0';
          	}
          	int l3 = 1;
          	while(l3 <= l1 || l3 <= l2){
          		if (a[l3] < b[l3]){
          			a[l3] += 10;
          			a[l3 + 1]--;
          		}
          		c[l3] = a[l3] - b[l3];
          		l3++;
          	}
          	while(c[l3] == 0){
          		l3--;
          	}
          	for (int i = l3;i > 0;i--){
          		cout << c[i];
          	}
          	return 0;
          }
          
          • 0
            @ 2024-1-27 16:56:31
            #include<bits/stdc++.h>
            using namespace std;
            int l1,l2;
            int maxlen;
            int beijianshu[205],jianshu[205],cha[205];
            
            void input(string s,int a[]) {
            	int len=s.length();
            	for(int i = 0; i < len; i++) {
            		a[len-i-1] = s[i] - '0';
            	}
            }
            
            void APAsub(int a[],int b[],int c[]) {
            	for(int i = 0; i < maxlen; i++) {
            		c[i] += a[i]-b[i];
            		if(c[i] < 0) {
            			c[i] += 10;
            			c[i+1] -= 1;
            		}
            	}
            }
            
            void output(int d[]) {
            	if (d[maxlen]==0) {
            		maxlen--;
            	}
            	for(int i = maxlen; i >= 0; i--) {
            		cout << d[i];
            	}
            }
            
            int main () {
            	string n1,n2;
            	cin >> n1 >> n2;
            	input(n1,beijianshu);
            	input(n2,jianshu);
            	l1 = n1.length();
            	l2 = n2.length();
            	maxlen = max(l1,l2);
            	APAsub(beijianshu,jianshu,cha);
            	output(cha);
            	return 0;
            }
            
            • 0
              @ 2024-1-20 10:20:03
              #include<bits/stdc++.h>
              using namespace std;
              int l1,l2;
              int maxlen;
              int beijianshu[205]={0},jianshu[205]={0},cha[205]={0};
              void input(string s,int a[]){
              	int len=s.length();
              	for(int i=0;i<len;i++){
              		a[len-i-1]=s[i]-'0';
              	}
              }
              void APAsub(int a[],int b[],int c[]){
              	for(int i=0;i<maxlen;i++){
              		c[i]+=(a[i]-b[i]);
              		if(c[i]<0){
              			c[i]+=10;
              			c[i+1]-=1;
              		}
              	}
              }
              void output(int d[]){
              	if(d[maxlen]==0)maxlen--;
              	for(int i=maxlen;i>=0;i--){
              		cout<<d[i];
              	}
              }
              int main(){
              	string n1,n2;
              	cin>>n1>>n2;
              	input(n1,beijianshu);
              	input(n2,jianshu);
              	l1=n1.length();
              	l2=n2.length();
              	maxlen=max(l1,l2);
              	APAsub(beijianshu,jianshu,cha);
              	output(cha);
              	return 0;
              } 
              
              • 1

              Information

              ID
              655
              Time
              1000ms
              Memory
              256MiB
              Difficulty
              6
              Tags
              # Submissions
              136
              Accepted
              43
              Uploaded By