1 条题解

  • 0
    @ 2025-11-4 9:12:41

    题意理解

    已知: k=0nakxk=k=0nbk(xt)k\sum_{k=0}^n a_k x^k = \sum_{k=0}^n b_k (x - t)^k 其中 aka_k 由递推式给出: $a_k = \begin{cases} (1234 \cdot a_{k - 1} + 5678) \bmod 3389 & k > 0 \\ 1 & k = 0 \end{cases} ​$ 输入 nn, tt, mmnn 很大,nm5n-m \le 5),求 bmb_m

    关键思路

    1. 公式转换

    由二项式定理: xk=i=0k(ki)tki(xt)ix^k = \sum_{i=0}^k \binom{k}{i} t^{k-i} (x-t)^i 代入左边: $\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$ 因此: bi=k=inak(ki)tkib_i = \sum_{k=i}^n a_k \binom{k}{i} t^{k-i}

    2. 问题简化

    题目中 nn 很大(可达 10300010^{3000}),但 nm5n-m \le 5,所以 mm 接近 nnbmb_m 只与 aka_kkmk \ge m 的项有关: bm=k=mnak(km)tkmb_m = \sum_{k=m}^n a_k \binom{k}{m} t^{k-m} 因为 nm5n-m \le 5,所以求和项数不超过 66

    3. 大数处理

    nn, mm 用字符串读入,用高精度类 MintMint 存储(每 99 位十进制数压成一位)。

    递推式 aka_k33893389,且是周期序列(周期 lenlen 可预处理)。

    计算 aka_k 时,由于 kk 很大,利用周期性:ak=akmodlena_k = a_{k \bmod len}

    4. 组合数计算

    需要计算 (km)\binom{k}{m},其中 kkmmnnnm5n-m \le 5(km)=k(k1)(km+1)m!\binom{k}{m} = \frac{k(k-1)\cdots(k-m+1)}{m!} 由于 mm 不大,可以直接计算。

    算法步骤

    1.预处理周期:计算 aka_k 序列的周期 lenlen

    2.读入大数:将 nn, mm 读入高精度类。

    3.计算 c=nmc = n-m:由于 c5c \le 5,只需计算 k=m,m+1,,nk = m, m+1, \dots, n 的项。

    4.计算每项: termk=ak(km)tkmterm_k = a_k \cdot \binom{k}{m} \cdot t^{k-m} 其中:

    ak=a(m+i)modlena_k = a_{(m + i) \bmod len}ii00cc

    (km)=j=0m1(kj)m!\binom{k}{m} = \frac{\prod_{j=0}^{m-1} (k-j)}{m!}

    tkmt^{k-m} 直接计算

    5.求和:bm=k=mntermkb_m = \sum_{k=m}^n term_k

    代码关键点

    MintMint 类实现高精度的加、乘、除。

    利用周期性避免计算巨大的 kk 对应的 aka_k

    由于 nmn-m 很小,直接循环计算这几项。

    总结

    本题结合了:

    生成函数与二项式定理

    模运算周期性

    高精度计算

    组合数公式

    关键观察是 nm5n-m \le 5 极大简化了计算,只需计算少数几项。

    • 1

    信息

    ID
    4923
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者