高精度加法(这道题我写的代码有点长。。。)
题目:
给定两个正整数(不含前导 0),计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
1≤整数长度≤100000
输入样例:
12
23
输出样例:
35
#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],b[N],c[N];
char t[N];
void BigAdd(int a[],int b[],int c[]){
int len=max(a[0],b[0]);
for(int i=1;i<=len;i++)c[i]=a[i]+b[i];
for(int i=1;i<=len;i++)if(c[i]>=10)c[i+1]++,c[i]-=10;
if(c[len+1])len++;
while(len>1&&!c[len])len--;
c[0]=len;
}
void print(int c[]){
for(int i=c[0];i>=1;i--)cout<<c[i];
cout<<endl;
}
int main(){
cin>>t;
int p=0,len=strlen(t);
for(int i=len-1;i>=0;i--)a[++p]=t[i]-'0';
a[0]=len;
cin>>t;
p=0,len=strlen(t);
for(int i=len-1;i>=0;i--)b[++p]=t[i]-'0';
b[0]=len;
BigAdd(a,b,c);
print(c);
}
总结:
高精度其实不难,关键是要理解加减乘除4种运算
高精度其实就是对数组和循环的控制和利用。
主要考察你的思维是否慎密