19 条题解

  • 0
    @ 2026-6-23 17:06:01
    #include <bits/stdc++.h>
    using namespace std;
    string s1,s2;
    int len1,len2,sum,carry=0,a[40]={0},b[40]={0},c[40]={0};
    char q;
    bool f;
    int main()
    {
    	cin>>s1>>s2>>q;
    	if(q=='+')
    	{
    		int len1=s1.size();
    		int len2=s2.size();
    		for(int i=0;i<len1;i++)
    			a[i]=s1[len1-i-1]-'0';
    		for(int i=0;i<len2;i++)
    			b[i]=s2[len2-i-1]-'0';
    		int maxlen=max(len1,len2);
    		for(int i=0;i<=maxlen;i++)
    		{
    			sum=a[i]+b[i]+carry;
    			c[i]=sum%10;
    			carry=sum/10;
    		}
    		if(c[maxlen]==0)
    		{
    			for(int i=maxlen-1;i>=0;i--)
    			{
    				cout<<c[i];
    			}
    		}
    		else 
    		{
    			for(int i=maxlen;i>=0;i--)
    			{
    				cout<<c[i];
    			}
    		}
    	}
    	if(q=='-')
    	{
    		int len1=s1.size();
    		int len2=s2.size();
    		f=true;
    		if(len1<len2||(len1==len2)&&(s1<s2))
    		{
    			f=false;
    			swap(s1,s2);
    			swap(len1,len2);
    		}
    		for(int i=0;i<len1;i++)
    			a[i]=s1[len1-i-1]-'0';
    		for(int i=0;i<len2;i++)
    			b[i]=s2[len2-i-1]-'0';
    		for(int i=0;i<len1;i++)	
    		{
    			if(a[i]<b[i])
    			{
    				a[i+1]=a[i+1]-1;
    				a[i]=a[i]+10;
    				c[i]=a[i]-b[i];
    			}
    			else c[i]=a[i]-b[i];	
    		}
    		int k=len1;
    		while(c[k]==0&&k>0) k--;
    		if(f==false) cout<<"-";
    		for(int i=k;i>=0;i--)
    			cout<<c[i];
    	}
    	return 0;
    }
    

    信息

    ID
    101
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    103
    已通过
    21
    上传者