C++编程中,常会处理一些大数的操作,例如幂指数计算,组合数计算,大数之间的加减法等。
大数通常的处理就是当作字符串或者数组,然后对每一位进行操作。举简单的加法来说,就是从低位逐位相加,大于等于10的进位。这里在存储大数时,遵循低位在前,高位在后的方式,这样方便取数据。
字符反转程序:
char* strReverse(const char* str)
{
char* tmp = new char[strlen(str) + 1];
strcpy(tmp,str);
int i = 0, j = strlen(str) - 1;
while (i < j)
{
*(tmp + j) ^= *(tmp + i);
*(tmp + i) ^= *(tmp + j);
*(tmp + j) ^= *(tmp + i);
i++;
j--;
}
return tmp;
}
大数相加程序:
string bigDataAdd(string num1, string num2)
{
string result;
num1 = strReverse(num1.c_str());
num2 = strReverse(num2.c_str());
int carry = 0;
int i = 0;
while (1)
{
int temp1 = i < num1.size() ? num1[i] - '0' : 0;
int temp2 = i < num2.size() ?