From 2a42612c486231f295d7375bba569824d5336612 Mon Sep 17 00:00:00 2001 From: DarkSharpness_XzY <2040703891@qq.com> Date: Fri, 20 Oct 2023 01:28:53 +0800 Subject: [PATCH] =?UTF-8?q?Upd:=20=E5=8A=A0=E4=BA=86=E4=B8=80=E7=82=B9?= =?UTF-8?q?=E9=99=A4=E6=B3=95=E5=92=8C=E5=8F=96=E6=A8=A1=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E7=9A=84=E7=BB=86=E8=8A=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f51add0..e1964f8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,36 @@ 相应的实现应该在 `int2048.cpp` 中完成,不要在 `int2048.h` 中实现。在 OJ 提交中,需要将 `int2048.cpp` 中的实现复制到 `int2048.h` 之中,再进行提交。 +#### 一些额外要求 + +**你不需要考虑除数或模数为 0 的情况,该情况下程序的行为属于未定义行为,我们保证测试点中不会出现这样的数据。** + +在我们的大整数类的实现中,对于除法操作 `x / y` ,其结果总是向下取整(即类似 python 中整除操作的表现): + +```python +# 这是一段 python 代码 +print(10 // 3, -10 // 3, 10 // -3, -10 // -3) +# 输出 3 -4 -4 3 +# 因为 -10 / -3 = 3.333... 向下取整即为 3 +# 而 10 / -3 = -3.333... 向下取整即为 -4 +``` + +需要注意的是,C++ 中,[有符号整数的除法](https://en.cppreference.com/w/cpp/language/operator_arithmetic)是向 0 取整。 + +```C++ +// 这是一段 C++ 代码 +std::cout + << 10 / 3 << ' ' + << 10 / -3 << ' ' + << -10 / 3 << ' ' + << -10 / -3 << '\n'; +// 输出 3 -3 -3 3 +// 因为 -10 / -3 = 3.333 向 0 取整即为 3 +// 而 10 / -3 = -3.333... 向 0 取整即为 -3 +``` + +而对于取模操作 `x % y` ,其被定义为 `x % y = x - (x / y) * y` 。 + ### 评分标准 总分共占比 6\% @@ -42,11 +72,14 @@ - 压位高精度加、减、乘法 20\% - 压位高精度除法(二分加速试商) 15\% - 压位快速高精度乘法(快速傅立叶变换) 20\% -- BONUS:压位快速高精度除法(分治除法)3\% -- BONUS:压位快速高精度除法(牛顿迭代法) 5\% +- BONUS:压位快速高精度除法(分治除法/牛顿迭代法) 5\% PS:Bonus 部分对代码性能也有要求,需要通过对应的测试数据点才能得到分数。且 Bonus 上限为 5\%,超过不溢出。 +如果你写了 BONUS 的除法并且通过了对应的测试点,那么你将不再需要实现二分加速试商除法。 + + + ### 数据范围 参考具体题目。