#include <iostream> #include <string> /*project:两个大整数相加 **@author:浅滩 **data:2019.05.15 */ using namespace std; void add(const string &,const string &); int main() {int n; string str1,str2; cin>>str1>>str2; add(str1,str2); } void add(const string &str1,const string &str2) { int *num1=new int [str1.size()]; int *num2=new int [str2.size()]; int result_size=(str1.size()>str2.size()? str1.size():str2.size()); int result[result_size]; fill(result,(result+result_size),0);//初始化结果数组 for(int i=0;i<str1.size();i++)//字符串到整数数组的转换 num1[i]=str1[i]-‘0‘; for(int i=0;i<str2.size();i++) num2[i]=str2[i]-‘0‘; int s1=str1.size()-1,s2=str2.size()-1,k=(str1.size()>str2.size()? str1.size():str2.size())-1; while(s1>=0&&s2>=0) { result[k]=num1[s1]+num2[s2]; k--;s1--;s2--; } while(s1>=0) { result[k]=num1[s1]; k--;s1--; } while(s2>=0) { result[k]=num1[s2]; k--;s2--; } result_size=(str1.size()>str2.size()? str1.size():str2.size())-1; for(int i=result_size;i>0;i--)//从后向前进位 { result[i-1]+=result[i]/10; result[i]=result[i]%10; } //cout<<result_size<<endl; for(int i=0;i<=result_size;i++) cout<<result[i]; }
原文地址:https://www.cnblogs.com/cstdio1/p/10885326.html
时间: 2024-10-28 20:56:25