1 条题解
-
0
题意理解
已知: 其中 由递推式给出: $a_k = \begin{cases} (1234 \cdot a_{k - 1} + 5678) \bmod 3389 & k > 0 \\ 1 & k = 0 \end{cases} $ 输入 , , ( 很大,),求 。
关键思路
1. 公式转换
由二项式定理: 代入左边: $\sum_{k=0}^n a_k \sum_{i=0}^k \binom{k}{i} t^{k-i} (x-t)^i = \sum_{i=0}^n \left( \sum_{k=i}^n a_k \binom{k}{i} t^{k-i} \right) (x-t)^i$ 因此:
2. 问题简化
题目中 很大(可达 ),但 ,所以 接近 , 只与 中 的项有关: 因为 ,所以求和项数不超过 。
3. 大数处理
, 用字符串读入,用高精度类 存储(每 位十进制数压成一位)。
递推式 模 ,且是周期序列(周期 可预处理)。
计算 时,由于 很大,利用周期性:。
4. 组合数计算
需要计算 ,其中 从 到 ,。 由于 不大,可以直接计算。
算法步骤
1.预处理周期:计算 序列的周期 。
2.读入大数:将 , 读入高精度类。
3.计算 :由于 ,只需计算 的项。
4.计算每项: 其中:
( 从 到 )
直接计算
5.求和:
代码关键点
类实现高精度的加、乘、除。
利用周期性避免计算巨大的 对应的 。
由于 很小,直接循环计算这几项。
总结
本题结合了:
生成函数与二项式定理
模运算周期性
高精度计算
组合数公式
关键观察是 极大简化了计算,只需计算少数几项。
- 1
信息
- ID
- 4923
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者