题目背景
无
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。a,b<=10500a,b<=10^{500}a,b<=10500
输出格式
输出只有一行,代表a+ba+ba+b的值
输入输出样例
输入 #1
1
1
输出 #1
2
思路:高精度算法~~,普通的数据类型已经不能满足他了,就我所学的~~所以这里我们需要用数组来储存每个数,值得注意的是,当数组中某个元素>=10的时候 需要进位
附代码
#include<stdio.h>
#include<string.h>
int main()
{
char str1[22222],str2[22222];
int begin[20000],end[22222];
memset(str1,0,sizeof(str1));//初始化数组
memset(str2,0,sizeof(str2));
memset(begin,0,sizeof(begin));
memset(end,0,sizeof(end));
int i,j,k;
int len1,len2;
scanf("%s%s",str1,str2);
len1=strlen(str1);
len2=strlen(str2);
int max;
max=(len1>len2?len1:len2);//比较数组长度的大小
for(j=0,i=len1-1;i>=0;j++,i--)
{
begin[j]=str1[i]-'0';//将数组字符串转换为数字
}
for(j=0,i=len2-1;i>=0;j++,i--)
{
end[j]=str2[i]-'0';
}
for(i=0;i<max;i++)
{
end[i]+=begin[i];
if(end[i]>=10)
{
end[i]%=10;
end[i+1]++;//进位
}
}
if(end[max]!=0)
printf("1");
for(i=max-1;i>=0;i--)
{
printf("%d",end[i]);
}
printf("\n");
return 0;
}