xuminzhou


私信TA

用户名:xuminzhou

访问量:8402

签 名:

codeing and writing

等  级
排  名 4696
经  验 1652
参赛次数 0
文章发表 10
年  龄 0
在职情况 学生
学  校 Nanchang University
专  业

  自我简介:

解题思路:

大数加法,常规题,用java肯定最方便(毕竟现成的库在那里),在这里还是用C++写吧。

字符串输入并且字符串输出,用字符串模拟加法运算的过程,从最后一位加起,用flag表示进位,每一次对应位数相加的结果进入新的字符串。(字符和数字的转化用'0')。


当两个字符串位数不一样时,较长的那个还要继续加,最后,考虑到得出的结果是否还有一次进位,单独用if判断一下。


最后,反转字符串str(肯定要反转啊,相加的结果是依次加进去的),利用reverse函数。

参考代码:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string add(string a,string b){
    int len1=a.size()-1,len2=b.size()-1;
    string str;
    int flag=0,sum=0;
    while(len1>=0&&len2>=0){
        sum=(a[len1--]-'0')+(b[len2--]-'0')+flag;
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    while(len1>=0){
        sum=flag+(a[len1--]-'0');
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    while(len2>=0){
        sum=flag+(b[len2--]-'0');
        flag=sum/10;
        sum=sum%10;
        str+=char(sum+'0');
    }
    if(flag)str+=char(flag+'0');
    reverse(str.begin(),str.end());
    return str;
}
int main(){
    string a,b;
    while(cin>>a>>b)
       cout<<add(a,b)<<endl;
	return 0;
}


 

0.0分

4 人评分

  评论区

  • «
  • »