4 条题解

  • 2
    string operator+(string str1,string str2)
    {
        string str;
        int len1=str1.length();
        int len2=str2.length();
        if(len1<len2)
        {
            for(int i=1;i<=len2-len1;i++)
               str1="0"+str1;
        }
        else
        {
            for(int i=1;i<=len1-len2;i++)
               str2="0"+str2;
        }
        len1=str1.length();
        int cf=0;
        int temp;
        for(int i=len1-1;i>=0;i--)
        {
            temp=str1[i]-'0'+str2[i]-'0'+cf;
            cf=temp/10;
            temp%=10;
            str=char(temp+'0')+str;
        }
        if(cf!=0)  str=char(cf+'0')+str;
        return str;
    }
    
    • 1
      int main()
      {
      	string a,b;
      	cin>>a>>b;
      	cout<<a+b;
      }
      

      ¿¿¿

      你可能觉得我在搞笑,但这的确能过

      因为我的+是重载过的()

      重载方法
      string operator+(string a,string b){
      略
      }
      

      然后你把高精度加法的内容修改一下填进去,返回一个string类字符串

      至于里面填什么过两天再发

      然后重载运算符有什么好处呢,就是写起来简单易懂

      • 0
        @ 2024-12-13 13:12:02
        #include<bits/stdc++.h>
        using namespace std;
        int a[1000],b[1000],c[1000];
        int main()
        {
        	int l1,l2;
        	string s1,s2;
        	cin>>s1>>s2;
        	l1=s1.length();
        	l2=s2.length();
        	for(int i=1;i<=l1;i++)
        	{
        		a[i]=s1[l1-i]-'0';
        	}
        	for(int i=1;i<=l2;i++)
        	{
        		b[i]=s2[l2-i]-'0';
        	}
        	int w=0;
        	for(int i=1;i<=max(l1,l2);i++)
        	{
        		c[i]=c[i]+a[i]+b[i]+w;
        		w=c[i]/10;
        		c[i]=c[i]%10;
        	}
        	for(int i=max(l1,l2);i>=1;i--)
        	{
        		cout<<c[i];
        	}
        	return 0;
        }
        
        • 0
          @ 2024-12-11 13:48:58
          #include<bits/stdc++.h>
          using namespace std;
          string a1,a2;
          int a[230],b[230],c[230];
          int main()
          {
          	int l1,l2,l;
          	cin>>a2>>a1;
          	l1=a1.length();
          	l2=a2.length();
          	if(l1<l2)
          	l=l2;
          	else
          	l=l1;
          	for(int i=l1-1;i>=0;i--)
          	{
          		a[i]=a1[l1-1-i]-'0';
          	}
          	for(int i=l2-1;i>=0;i--)
          	{
          		b[i]=a2[l2-1-i]-'0';
          	}
          	for(int i=0;i<l;i++)
          	{
          		c[i]=a[i]+b[i];
          	}
          	for(int i=0;i<l;i++)
          	{
          		c[i+1]=c[i+1]+(c[i]/10);
          		c[i]=c[i]%10;
          	}
          	if(c[l]!=0)
          	l++;
          	for(int i=l-1;i>=0;i--)
          	cout<<c[i];
          	return 0;
          }
          

          我们是冠军!!!

          • 1

          信息

          ID
          195
          时间
          1000ms
          内存
          256MiB
          难度
          8
          标签
          递交数
          127
          已通过
          23
          上传者