社区讨论

告诫后人

P5170【模板】类欧几里德算法参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo2mah4u
此快照首次捕获于
2023/10/23 16:09
2 年前
此快照最后确认于
2023/10/23 16:09
2 年前
查看原帖
  1. 由于 C++ 中的 / 实际上是向零取整而非向下取整,因此,若在递归过程中 n,a,b,cn,a,b,c 中存在负数,可能会使向下取整变成向上取整,导致计算错误。
  2. 类欧的常数较大,如果将 F,G,HF,G,H 分开计算,可能会重复调用,导致复杂度不是 O(logn)O(\log n)。一种解决方法是,使用哈希表或 map 来记录,但是这样常数非常大,无法通过此题。解决方法是,让每次 F,G,HF,G,H 从相同的位置转移过来,从而能将 F,G,HF,G,H 统一计算。
  3. 既然出现了取模,在模意义下除以二就不能写成 >>,而要乘二的逆元。
  4. 一次取模都不能忘,如果你 WA 了很靠后的位置,很有可能就是漏取模。建议检查自己程序是否有 UB。

回复

2 条回复,欢迎继续交流。

正在加载回复...