求大佬帮我写一段高精度代码
  • 板块学术版
  • 楼主CSP_J_2025
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/2 20:35
  • 上次更新2024/8/2 21:19:45
查看原帖
求大佬帮我写一段高精度代码
1309385
CSP_J_2025楼主2024/8/2 20:35
typedef unsigned char byte;
typedef std::vector<byte> vb;
vb data;
bool flag; //false->正数  true->负数
static vb unsigned_add(const vb& l, const vb& r)
{
	vb res;
	const size_t size = std::max(l.size(), r.size());
	byte li, ri;
	bool jw = false;
	for (size_t i = 0; i < size; i++)
	{
		if (i < l.size()) li = l[i];
		else li = 0;
		if (i < r.size()) ri = r[i];
		else ri = 0;
		res.push_back((li + ri + jw) % 10);
		jw = (li + ri) >= 10;
	}
	if (jw) res.push_back(1);
	return res;
}
static vb unsigned_substract(const vb& l, const vb& r) //l>=r
{
	vb res;
	bool tw = false;
	byte ri;
	char t;
	for (size_t i = 0; i < l.size(); i++)
	{
		if (i < r.size()) ri = r[i];
		else ri = 0;
		t = l[i] - ri - tw;
		if (t < 0)
		{
			tw = true;
			t += 10;
		}
		res.push_back(t);
	}
}
static vb unsigned_multiply(const vb& l, const vb& r)
{

}
static vb unsigned_divide(const vb& l, const vb& r)
{

}

要求:补全unsigned_multiply和unsigned_divide函数,unsigned_multiply请用FFT,unsigned_divide函数时间复杂度尽可能低,空间复杂度不要高得太离谱。 vb类型其实就是std::vector<unsigned char>,第0项(索引为0)是个位,第1项是十位……

如果我的高精度加减法写的有问题,欢迎大佬指正

2024/8/2 20:35
加载中...