/*
BigNumberPlus(char* strNumLeft, char* strNumRight)
@author arhaiyun
*/
#include "stdafx.h"
#include <iostream>
#include <assert.h>
#include <string.h>
using namespace std;
char* BigNumberPlus(char* strNumLeft, char* strNumRight)
{
assert(strNumLeft != NULL && strNumRight != NULL);
int lenLeft = strlen(strNumLeft);
int lenRight = strlen(strNumRight);
int maxLen = lenLeft > lenRight ? lenLeft : lenRight;
char* result = new char[maxLen + 2];
memset(result, 0, sizeof(char) * (maxLen + 2));
result[0] = '0';
int i = lenLeft - 1;
int j = lenRight - 1;
int k = maxLen;
while(i >=0 && j >= 0)
{
result[k--] = strNumLeft[i--] + strNumRight[j--] - '0';
}
if(i >= 0)
{
while(i >= 0)
result[k--] = strNumLeft[i--];
}
if(j >= 0)
{
while(j >= 0)
result[k--] = strNumLeft[j--];
}
for(i = maxLen; i > 0; i--)
{
if(result[i] > '9')
{
result[i] -= 10;
result[i - 1] += 1;
}
}
size_t pos = strspn(result, "0");
printf("%s\n", result + pos);
return result;
}
int main(int argc, char* argv[])
{
char strNum1[] = "7897912345678910";
char strNum2[] = "98765432189";
BigNumberPlus(strNum1, strNum2);
system("pause");
return 0;
}