(又双叒叕被薄纱了
今天拿老掉牙的高精度来充个数把~~)
在初学C语言的时候就有过这个问题,超过long long的数据怎么办......
直接上代码
a=input()
b=input()
a=int(a)
b=int(b)
print(a+b)
咳咳这是“偷鸡摸狗”(bushi 的python用法
py对数据类型没有上限要求,可以到正无穷~
别水了别水了,上点干货把
#include <stdio.h>
#include <string.h>
int main()
{
char s1[3000], s2[3000];
scanf("%s%s", s1, s2);
int a[3000], b[3000], c[3000];
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
int l1 = strlen(s1);
int l2 = strlen(s2);
int i, j;
for (i = 0, j = l1 - 1; i < l1; i++, j--)
{
a[i] = s1[j] - '0';
}
for (i = 0, j = l2 - 1; i < l2; i++, j--)
{
b[i] = s2[j] - '0';
}
int len = 0;
if (l1 > l2)
{
len = l1;
}
else
{
len = l2;
}
for (i = 0; i < len; i++)
{
c[i] = a[i] + b[i];
}
for (i = 0; i < len; i++)
{
if (c[i] >= 10)
{
c[i + 1] += c[i] / 10;
c[i] %= 10;
}
}
i = 2999;
while (c[i] == 0 && i > 0)
{
i--;
}
for (j = i; j >= 0; j--)
{
printf("%d", c[j]);
}
return 0;
}
需要注意的一点是,高精度算法需要倒叙运算
because:
高精度算法通过字符数组来模拟数字的加减,但是数字的加减有进位运算,如果是正序的数组则越界,用倒叙的运算更合适一点~~