61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
# int2048
|
||
|
||
高精度计算是一种程序设计的算法。由于中央处理器的字长限制,如 32 位 CPU 中一个整数最大只能取值 4,294,967,295。因此在进行更大范围的数值计算中,往往要采取模拟手段。通常通过分离字符的方法通过数字数组进行输入、通过数组倒序输出、通过模拟竖式计算进行计算。一般而言,主要模拟的是按位运算,可以用不同的进位制达成不同的目的。
|
||
|
||
本次作业要求用 C++ 实现整数的高精度加减乘除。
|
||
|
||
### 实现要求
|
||
|
||
要求实现一个 C++ 的大整数类,命名为 `int2048`。
|
||
|
||
接口已在 `int2048.h` 中给出,你们需要新建一个 `int2048.cpp` 文件,在其中实现给定的接口。
|
||
|
||
相应的实现应该在 `int2048.cpp` 中完成,不要在 `int2048.h` 中实现。在 OJ 提交中,需要将 `int2048.cpp` 中的实现复制到 `int2048.h` 之中,再进行提交。
|
||
|
||
### 评分标准
|
||
|
||
总分共占比 6\%
|
||
其中
|
||
|
||
- Integer 占比 100\%
|
||
- code review 若码风较差将酌情扣分
|
||
|
||
#### B 班
|
||
|
||
- 构造函数以及关系运算符 10\%
|
||
- 无符号高精度加减法 10\%
|
||
- 有符号高精度加减法 10\%
|
||
- 高精度乘法 10\%
|
||
- 高精度除法 15\%
|
||
- 压位高精度加、减、乘法 30\%
|
||
- 压位高精度除法 15\%
|
||
- BONUS:压位快速高精度除法(分治乘法) 1\%
|
||
- BONUS:压位快速高精度除法(二分加速试商) 4\%
|
||
|
||
#### A 班
|
||
|
||
- 构造函数以及关系运算符 10\%
|
||
- 无符号高精度加减法 5\%
|
||
- 有符号高精度加减法 10\%
|
||
- 高精度乘法 10\%
|
||
- 高精度除法 10\%
|
||
- 压位高精度加、减、乘法 20\%
|
||
- 压位高精度除法(二分加速试商) 15\%
|
||
- 压位快速高精度乘法(快速傅立叶变换) 20\%
|
||
- BONUS:压位快速高精度除法(分治除法)3\%
|
||
- BONUS:压位快速高精度除法(牛顿迭代法) 5\%
|
||
|
||
PS:Bonus 部分对代码性能也有要求,需要通过对应的测试数据点才能得到分数。且 Bonus 上限为 5\%,超过不溢出。
|
||
|
||
### 数据范围
|
||
|
||
参考具体题目。
|
||
|
||
**所有测试点时限均设置为 std 耗时的 2.5 倍以上。**
|
||
|
||
### 参考资料
|
||
|
||
[OI Wiki](https://oi-wiki.org)
|
||
|
||
[分治除法以及相关算法](https://baobaobear.github.io/post/20210320-bigint3/)
|