大整数相加问题

Posted cstdio1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大整数相加问题相关的知识,希望对你有一定的参考价值。

#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];
    
}

 

以上是关于大整数相加问题的主要内容,如果未能解决你的问题,请参考以下文章

C语言两个特别大的整数类型相加超出范围使用两个技巧

如何实现大整数相加

java大整数相加

实现大整数相加(考虑符号位,可能有负整数) 思维严谨程度!!

用JAVA线性表来编写“任意大的整数相加减”

实现大整数相加