vc++编程 长整数相加 能不能简单一点 快啊 谢谢!!!!

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:40:25
问题的解决方案:
(1)很长整数一般指无法用long型数存储的整数,为此用两个字符数组来存放用户输入的两个整数;
(2)把这两个整数从个位对齐转存到另外两个数组中,然后逐位相加;
(3)要注意区分有进位的情况和无进位的情况;
(4)把相加的结果输出到屏幕上。

#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int MAXN = 9999;
const int DLEN = 4;
const int DIGIT = 500;

// 数字在该类中每四位逆序存放。
// 实现了加减乘除着四个最基本的运算。
// 乘法的时间复杂度为)O(n^2)
// 以后会把它改成更加快的傅立叶变换
class BigNum {
public:
BigNum() : len(1) { memset(a, 0, sizeof(a)); }
BigNum(int );
BigNum(const char []);
BigNum(const BigNum &);
BigNum &operator=(const BigNum &);
BigNum operator+(const BigNum &) const;
BigNum operator-(const BigNum &) const;
BigNum operator*(const BigNum &) const;
BigNum operator/(const int) const;
friend ostream & operator<<(ostream &os, const BigNum &n);
friend istream & operator>>(istream &is, const BigNum &n);
private:
int a[DIGIT];
int len;
};
BigNum::BigNum(int n)
{
len = 0;
memset(