超长正整数相加 | |
描述: | 题目描述:请设计一个算法完成两个超长正整数的加法。 要求实现函数: void AddLongInteger(char * pcAddend, char * pcAugend, char * pcAddResult); 输入参数: char * pcAddend:加数 char * pcAugend:被加数 char * pcAddResult:加法结果 返回值:无 |
运行时间限制: | 1 Sec |
内存限制: | 128 MByte |
输入: | 两个超长正整数的字符串 |
输出: | 相加后结果的字符串 |
样例输入: | 123456789123456789 123456789123456789 |
样例输出: | 246913578246913578 |
答案提示: | |
#include<iostream>
using namespace std;
int main()
{
char ch1[3000]={0};
char ch2[3000]={0};
int num1[3000]={0};
int num2[3000]={0};
cin>>ch1;
cin>>ch2;
int len1=strlen(ch1);
int len2=strlen(ch2);
int i,j;
i=0;
for(j=len1-1;j>=0;j--)
{
num1[i++]=ch1[j]-'0';
}
i=0;
for(j=len2-1;j>=0;j--)
{
num2[i++]=ch2[j]-'0';
}
int len=len1>len2?len1:len2;
for(i=0;i<len;i++)
{
num1[i]+=num2[i];
num1[i+1]+=num1[i]/10;
num1[i]%=10;
}
int index=len;
//while(num1[index]==0) index--;
if(num1[len]!=0)
cout<<num1[len];
for(i=len-1;i>=0;i--)
printf("%d",num1[i]);
printf("\n");
}