建议前往 洛谷 阅读本文。
好题。本题解做法与官方题解相同,但将采用类似 CF Hints 的风格。下文中的
::::info[提示 1]
考虑答案的形式。
:::success[答案]
答案一定是
:::
::::
::::info[提示 2]
考虑
:::success[答案]
最基础地,有
若
:::
::::
:::::info[提示 3]
考虑如何通过暴力枚举找到所有解
::::warning[尝试与观察]
- 考虑枚举
的值,还需要枚举 才能解出 。 - 考虑枚举
的值,还需要枚举 才能解出 (因为允许 有前导零)。
于是发现第一维需要枚举
::::
::::success[答案]
对于第二维,可以枚举
:::success[枚举
请注意,
将
:::
:::success[枚举
同样整理
:::
::::
:::::
::::info[提示 4]
考虑如何优化暴力。
:::success[答案]
- 若
,枚举 。 - 若
,枚举 。
:::
::::
::::info[提示 5]
考虑得到所有解
:::success[答案]
对于所有
对于
:::
::::
:::success[提示 6]
于是这道题就做完了。时间复杂度
:::
我的代码写得有点丑,并且写的时候也对照了官方题解代码,所以建议直接去学习官方题解代码。我的代码与官方题解代码实现上唯一的区别是我用了扩欧求解线性同余方程,而官方题解代码用了欧拉定理。
关于本文
由 Getaway_Car 撰写, 采用 CC BY-NC 4.0 许可协议.