3 条题解

  • 1
    @ 2025-4-21 17:06:26
    using namespace std;
    int a[9999999],b[9999999],c[9999999];
    int main()
    {
    	string s1,s2;
    	bool f=false;
    	int lena,lenb,lenc;
    	cin>>s1;
    	cin>>s2;
    	lena=s1.length();
    	lenb=s2.length();
    	for(int i=1;i<=lena;i++)
    	{
    		a[i]=s1[lena-i]-'0';
    	}
    	for(int i=1;i<=lenb;i++)
    	{
    		b[i]=s2[lenb-i]-'0';
    	}
    	if((lena<lenb)||(lena==lenb)&&(s1<s2))
    	{
    		f=true;
    		swap(a,b);
    	}
    	lenc=max(lena,lenb);
    	for(int i=1;i<=lenc;i++)
    	{
    		if(a[i]<b[i])
    		{
    			a[i+1]--;
    			a[i]+=10;
    		}
    		c[i]=a[i]-b[i];
    	}
    	while(c[lenc]==0&&lenc>1)//lenc>1是因为怕把c[i]全减完 
    	{
    		lenc--;
    	}
    	if(f==true)
    	{
    		cout<<'-';
    	}
    	for(int i=lenc;i>=1;i--)
    	{
    		cout<<c[i];
    	}
    	return 0;
    }
    • 1
      @ 2025-2-7 22:17:11

      相信没有什么方法比我的更复杂吧

      #include<bits/stdc++.h>
      using namespace std;
      char js1[205];//加数1 
      char js2[205];//加数2 
      long long jsc1;//加数1的长度 
      long long jsc2;//加数2的长度 
      long long n1[205];//储存加数1 
      long long n2[205];//储存加数2
      long long n3[205];//储存和 
      long long jw;//统计进位 
      long long maxx;//储存更长的那个数的长度 
      bool pl;//判断是否有前导0 
      bool js=0;//看哪个大 
      int main(){
      	cin>>js1>>js2;
      	jsc1=strlen(js1);
      	jsc2=strlen(js2);
      	for(int i=1,j=jsc1-1;i<=jsc1,j>=0;i++,j--){
      		n1[i]=js1[j]-'0';
      	}
      	for(int i=1,j=jsc2-1;i<=jsc2,j>=0;i++,j--){
      		n2[i]=js2[j]-'0';
      	}
      	maxx=max(jsc1,jsc2); 
      	if(maxx==jsc1){
      		for(int i=1;i<=maxx;i++){
      			n3[i]=n1[i]-n2[i];
      			if(n3[i]<0){
      				n3[i]=n3[i]+10;
      				n1[i+1]=n1[i+1]-1;
      			}
      		}
      	}else{
      		js=1;
      		for(int i=1;i<=maxx;i++){
      			n3[i]=n2[i]-n1[i];
      			if(n3[i]<0){
      				n3[i]=n3[i]+10;
      				n2[i+1]=n2[i+1]-1;
      			}
      		}
      	}
      	pl=true;
      	if(js==1){
      		cout<<"-";
      	}
      	for(int i=maxx;i>=1;i--){
      		if(pl==true){
      			if(i==maxx&&n3[i]==0){
      				pl=true;
      			}else{
      				if(i!=maxx&&pl&&n3[i]==0){
      					pl=true;
      				}else{
      					pl=false;
      				}
      			}
      		}
      		if(!pl){
      			cout<<n3[i];
      		}
      	}
      	return 0;
      }
      
      
      • 0
        @ 2025-4-21 17:08:01

        我的方法怎样

        • 1

        信息

        ID
        650
        时间
        1000ms
        内存
        128MiB
        难度
        9
        标签
        (无)
        递交数
        15
        已通过
        4
        上传者