/*
两个超长正整数的加法
描述: 请设计一个算法完成两个超长正整数的加法,两个加数的长度均小于128
运行时间限制: 无限制
内存限制: 无限制
输入: 正整数+空格+正整数
输出: 正整数
样例输入: 1234567890987654 888888888888888
样例输出: 2123456779876542
答案提示: [pre]编写一个main函数实现该功能算法。
*/
void bigAdd(char *opt1,char *opt2,char *res)
{
int carry = 0;
int len1 = strlen(opt1);
int len2 = strlen(opt2);
int a1,a2,sum;
char ch1,ch2,m;
int i = len1-1,j = len2-1,k = 0;
while(i>=0&&j>=0)
{
ch1 = opt1[i];
ch2 = opt2[j];
a1 = atoi(&ch1);
a2 = atoi(&ch2);
sum = a1+a2+carry;
carry = sum/10;
m = sum%10+'0';
res[k] = m;
i--,j--;
k++;
}
if(i>=0)
{
while(i>=0)
{
ch1 = opt1[i];
a1 = atoi(&ch1);
sum = a1+carry;
m = sum%10+'0';
carry = sum/10;
res[k] = m;
k++;
i--;
}
}
else if(j>=0)
{
while(j>=0)
{
ch2 = opt2[j];
a2 = atoi(&ch2);
sum = a2+carry;
m = sum%10+'0';
carry = sum/10;
res[k] = m;
k++;
j--;
}
}
j = 0;
k--;
while(j<k)
{
m = res[j];
res[j] = res[k];
res[k] = m;
j++;
k--;
}
}
大整数加法
最新推荐文章于 2024-02-09 14:57:27 发布