#include <iostream>
#include <string.h>
#include <cassert>
class BigIntegerMultiplier
{
private:
/// 判断两个字符串可不可以表示一个整数
static inline bool isNumber(const char* s)
{
if(0 == s || '\0' == *s++)
return false;
while('\0' != *s)
{
if(*s < '0' || *s > '9')
return false;
++s;
}
return true;
}
/// 判断字符s是否为一个整数
static inline bool isNumber(char s)
{
return s > '9' || s < '0' ? false : true;
}
/**
* 将一个数num加到另一个大数上result的pos位置上
* 函数内部使用递归来处理进位的问题
* */
static void add(char num, char* result, unsigned int pos)
{
if(!isNumber(num)) return;
int sum = (num - '0' ) + (result[pos] - '0');
if(sum < 10)
{
result[pos] = sum + '0';
return;
}
result[pos] = '0' + sum - 10;
add('1', result, pos - 1);
}
/**
* 将一个小数num(