自认为算法比较渣,最近经常遇到一些大数问题,虽然原理大家都懂。就是把大数转换成字符串或者数组,一位一位的进行计算。
但是实际写起代码来,还是Bug满天飞。
还是自己用代码实现一遍比较靠谱,顺便加深一下理解。
代码全扔下面了。注释应该还比较详细。
/*
这里专门就算法中的大数问题进行一个统一归纳
*/
#include<iostream>
#include<string>
#include<vector>
using namespace std;
//结果支持的最大位数
//这个可以依据具体需求调整
const static int M = 2000;
int numA[M];
int numB[M];
//使用string重置numA
void resetNumA(string numAStr)
{
memset(numA,0,M*sizeof(int));
//将字符串的每一位都转换成数字传入数组
for (int i = 0; i < numAStr.length(); i++)
{
numA[i] = numAStr[numAStr.length()-i-1] - '0';
}
}
//使用string重置numB
void resetNumB(string numBStr)
{
memset(numB,0,M*sizeof(int));
//将字符串的每一位都转换成数字传入数组
for (int i = 0; i < numBStr.length(); i++)
{
numB[i] = numBStr[numBStr.length()-i-1] - '0';
}
}
//将数组转换为字符串,用于输出
string getNumString(int* num)
{
string numString;