#include<stdio.h>
#include<string.h>
int add(char * A,char * B,int * re)//定义加法函数,传入字符数组A,B,结果为整型re 再返回一个结果长度的整型
{
int len1,len2,i,j,max;
int C[1000],D[1000];
len1 = strlen(A);
len2 = strlen(B);
for(i=len1-1,j=0;i>=0;i--)//对AB进行倒置,并存入CD整型数组中
C[j++] = A[i]-'0';
for(i=len2-1,j=0;i>=0;i--)
D[j++] = B[i]-'0';
if(len1>len2) max = len1;//找到最长的数组长度以便于每一位数字都可以运算
else max = len2;
for(i=0;i<max;i++)
{
re[i] = re[i]+C[i]+D[i];//re[i]可能有上一次运算会进位,所以需要加1,re[i]可能为0/1
if(re[i]>9)//若和超过9 此位数-10,下一位+1
{
re[i] -= 10;//进位-10
re[i+1]++;//下一位+1
}
}
if(re[max]==0) return max;//若最后一个为0说明位数不变
else return max + 1;//若为1 说明结果位数会比最大的加1 类似999+101=1100
}
int main()
{
int RE[1000]={0},i,len;
char A[1000],B[1000];
scanf("%s %s",A,B);
len = add(A,B,RE);//len为结果的长度
for(i=len-1;i>=0;i--)
printf("%d",RE[i]);//倒序输出
}
这次的问题很简单,就是给你两个正整数A和B,请你帮忙计算A+B的运算结果。有点儿不一样的是,这两个正整数可能会很大噢!
输入格式:
输入包括两行,每行一个正整数,分别代表加数A和B(0<A,B≤1e10086)。
输出格式:
输出仅一行,即A+B的运算结果。