背景
高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。
对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。
描述
输入两个自然数,用高精度方式算出它们的和。
输入格式
两个自然数,一行一个。
方式:通过键盘输入
输出格式
一行,它们的和。
方式:通过屏幕输出
测试样例
输入
20100122201001221234567890 2010012220100122
输出
20100122203011233454668012
注意
数字可能会非常长。
参考程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int i;
char a[1000],b[1000];
cin>>a>>b;
int A[1000],B[1000],C[1000];
for(i=0;i<100;i++)
{
A[i]=0;
B[i]=0;
C[i]=0;
}
for (i=0;i<strlen(a);i++) //倒存a
{
A[strlen(a)-i-1]=a[i]-48;
}
for (i=0;i<strlen(b);i++) //倒存b
{
B[strlen(b)-i-1]=b[i]-48;
}
int max=strlen(a)>strlen(b)?strlen(a):strlen(b);
int num=0;
for(i=0;i<max-1;i++)
{
C[i]=A[i]+B[i]+num;
num=0;
if(C[i]>9)
{
num=C[i]/10;
C[i]=C[i]%10;
}
}
C[max-1]=A[max-1]+B[max-1];
if(C[max-1]>9)
{
C[max]=C[max-1]/10;
C[max-1]=C[max-1]%10;
max++;
}
for(i=0;i<max;i++)
{
cout<<C[max-i-1];
}
cout<<endl;
return 0;
}
如程序有错误或者你有什么建议,欢迎你的留言!