觉得字符串写的不好。。。就试着写写字符串。。。
然后。。。莫名想起高精度。。。
好吧写高精度。。。
感觉写的比较。。。
不支持负数,最大两万位。。。
(当然改几个数就可以几十万位。。。)
上代码
基本思路:
先读入,然后字符转换成数字(减0)(注意是字符串加减啊)
再把短的前面补零跟长的对齐,加起来,满十进一。
就可以了、、、
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s1[20000];
char s2[20000];
int num1[20000], len1;
int num2[20000], len2;
int main()
{
scanf("%s", s1);
scanf("%s", s2);
int len = strlen(s1);
for(int i=len-1; i>=0; i--)
num1[++len1] = s1[i] - '0';
len = strlen(s2);
for(int i=len-1; i>=0; i--)
num2[++len2] = s2[i] - '0';
len = max(len1, len2);
for(int i=1; i<=len; i++)
num1[i] += num2[i];
for(int i=1; i<=len; i++)
if(num1[i] >= 10)
{
num1[i+1]++;
num1[i] %= 10;
}
len1 = len;
if(num1[len+1])
len1++;
for(int i=len1; i>=1; i--)
printf("%d", num1[i]);
return 0;
}