高精度实现加法(c++)
算法函数
- 我使用的是数组,也可以使用vector,这样不用在意数组的大小)
for(int i=0;A[i] || B[i];i++)
{
if(A[i]) t+=A[i];
if(B[i]) t+=B[i];
C[i]=t%10;
t/=10;
}
if(t) C[i]=1;
全部代码
#include<iostream>
#include<cstring>
using namespace std;
const int N=1e5+10;
int C[N],A[N],B[N],t=0;
void add(int A[],int B[])
{
int i;
for(int i=0;A[i] || B[i];i++)
{
if(A[i]) t+=A[i];
if(B[i]) t+=B[i];
C[i]=t%10;
t/=10;
}
if(t) C[i]=1;
}
int main()
{
int lena,lenb;
string a,b;
cin>>a>>b;
lena=a.size(),lenb=b.size();
for(int i=a.size()-1,k=0;i>=0;i--) A[k++]=a[i]-'0'; //这样可以使得转换为数字(字符转换为数字)
for(int i=b.size()-1,j=0;i>=0;i--) B[j++]=b[i]-'0';
add(A,B);
if(lena>lenb) lenb=lena;
for(int i=lenb-1;i>=0;i--) cout<<C[i];
}
输入样式
输入
12
23
输出
35