您的位置:首页 > 其它

高精度加法

2016-09-25 16:14 183 查看
问题描述

  输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。

算法描述

  由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。

  定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。

  计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。

  最后将C输出即可。

输入格式

  输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两
4000
个整数都不超过100位,两数的最高位都不是0。

输出格式

  输出一行,表示a + b的值。

样例输入

20100122201001221234567890

2010012220100122

样例输出

20100122203011233454668012

源代码


1

#include<stdio.h>


2

#include<string.h>


3

#define MAXa 100


4

#define MAXb 100


5

#define MAXc 101


6

int main()


7

{


8

char a[MAXa];


9

char b[MAXb];


10

int c[MAXc];


11

int la, lb;


12

int i, j;


13

int r = 0;


14

int n = 0;


15

int s;//计算某一位未进位之前的值


16



17

scanf("%s%s", a, b);


18

memset(c,0,sizeof(c));


19

la = strlen(a);


20

lb = strlen(b);


21



22

for (i = la - 1, j = lb - 1; i >= 0 && j >= 0; i--, j--)


23

{


24

s = (a[i] - '0') + (b[j] - '0') + r;


25

c[n++] = s % 10;


26

r = s / 10;


27

}


28

if (la > lb )


29

{


30

for (; i >= 0; i--)


31

{


32

s = a[i] - '0' + r;


33

  c[n++] = s % 10;


34

  r = s / 10;


35

}


36

}


37

else if ((la < lb) && (j >= 0))


38

{


39

for (; j >= 0; j--)


40

{


41

s = b[j] - '0' + r;


42

  c[n++] = s % 10;


43

  r = s / 10;


44

}


45

}


46

else


47

{


48

c[n++] = r;


49

}


50

for (i = MAXc - 1; i >= 0; i--)


51

{


52

if (c[i])


53

{


54

break;


55

}


56

}


57

for (j = i; j >= 0; j--)


58

{


59

printf("%d", c[j]);


60

}


61

printf("\n");


62



63

return 0;


64

}


详细记录
评测点序号评测结果得分CPU使用内存使用下载评测数据
1正确10.000ms836.0KB输入 输出
2正确10.000ms840.0KB输入 输出
3正确10.000ms840.0KB输入 输出
4正确10.000ms836.0KB输入 输出
5正确10.000ms836.0KB输入 输出
6正确10.000ms836.0KB输入 输出
7正确10.000ms836.0KB输入 输出
8正确10.000ms836.0KB输入 输出
9正确10.000ms836.0KB输入 输出
10正确10.000ms836.0KB输入 输出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: