在参加很多算法比赛很多地方都得用到长数据
// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <vector>
using namespace std;
class bigint
{
public:
bigint();
~bigint(){}
vector<char> add(char *, char *);
vector<char> add(vector<char>, vector<char>);
protected:
private:
};
bigint::bigint()
{
}
vector<char> bigint::add(char *ch1, char *ch2)
{
vector<char> vchR,vch1,vch2;
int isAddOne = 0;
while (*ch1 || *ch2)
{
if (*ch1&&*ch2)
{
vch1.push_back(*ch1);
vch2.push_back(*ch2);
*(ch1++);
*(ch2++);
}
else if (*ch1&&!*ch2)
{
vch1.push_back(*ch1);
*(ch1++);
}
else if (!*ch1&&*ch2)
{
vch1.push_back(*ch2);
*(ch2++);
}
}
vchR = add(vch1, vch2);
return vchR;
}
vector<char> bigint::add(vector<char> vch1, vector<char> vch2)
{
vector<char> vchR;
int isAddOne = 0;
while (vch1.size() || vch2.size())
{
char chRe;
if (vch1.size() && vch2.size())
{
int iNum1 = vch1.back();
int iNum2 = vch2.back();
chRe = iNum1 + iNum2 - 96;
vch1.pop_back();
vch2.pop_back();
}
else if (vch1.size() && !vch2.size())
{
int iNum1 = vch1.back();
chRe = iNum1 - 48;
vch1.pop_back();
}
else if (!vch1.size() && vch2.size())
{
int iNum2 = vch2.back();
chRe = iNum2 - 48;
vch2.pop_back();
}
else
{
printf("");
}
int temp = chRe;//存放来判断是否进位
chRe = chRe % 10 + isAddOne;
isAddOne = temp / 10;
vchR.push_back(chRe);
}
return vchR;
}
int _tmain(int argc, _TCHAR* argv[])
{
bigint b;
vector<char> vch=b.add("123456", "65324");
while (vch.size())
{
printf("%d",vch.back());
vch.pop_back();
}
printf("\n%d", 123456 + 65324);
getchar();
return 0;
}
我也就是业余随便写了一个,万一哪天自己用得着,如果有高手请多多指教