专栏文章

题解:P1001 A+B Problem

P1001题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mipcrdl1
此快照首次捕获于
2025/12/03 09:52
3 个月前
此快照最后确认于
2025/12/03 09:52
3 个月前
查看原文

题意描述

给定 A,BA, B,计算:
A+BA + B
的结果,其中 A,B109|A|, |B| \le 10^9

解法说明

注意到这个式子非常困难,我们先考虑取一些素数 pp,在模素数意义下的计算,最后再用 CRT 组合起来。
考虑
ab=(a+b2)(a2)(b2)ab = \binom {a + b} 2 - \binom a 2 - \binom b 2
(a2)+(b2)=(a+b2)ab\binom a 2 + \binom b 2 = \binom {a + b} 2 - ab
也就是说,如果我们能找到合适的 a,ba, b,使得 (a2)A(modp),(b2)B(modp)\binom a 2 \equiv A \pmod p, \binom b 2 \equiv B \pmod p,就可以求出答案。
观察
(a2)=12a212aA(modp)\binom a 2 = \frac 1 2 a^2 - \frac 1 2 a \equiv A \pmod p
考虑求根公式
a12±2A+14(modp)a \equiv \frac 1 2 \pm \sqrt {2A + \frac 1 4} \pmod p
解一个二次剩余即可。
一个问题是二次剩余不一定存在,所以随机模数 pp,并用 Miller-Rabin 算法判断即可。
还有问题是答案可能是负数,我们发现如果答案是负数,则算出来的答案会大于 2×1092 \times 10^9,此时将 A,BA, B 同时取负,再计算答案即可。

评论

0 条评论,欢迎与作者交流。

正在加载评论...