数学练习(c++)

P5431【模板】模意义下的乘法逆元 2

由于这道题时间卡的有些紧,我们自然不能一个一个地算逆元,不然时间复杂度就会达到 \(O(n \log{p})\),在 \(n \in[1,5 \times10^6]\) 的范围下,几乎没有 AC 的可能,于是我们考虑线性递推求逆元。

对于 \(a_i\),我们考虑 \(mf_i=\prod_{j=1}^{i}{a_j}\),即前缀积。

先倒序求 \(mf_i^{-1}\mod{p}\),再用线性的复杂度推 \(a_i^{-1}\mod{p}\) 即可。

模板题贴个代码:

inv_mf[n]=qpow(mf[n],p-2,p);
for(int i=n;i>=1;i--)inv_mf[i-1]=(1LL*a[i]*inv_mf[i])%p;
int ans=0,pow=1;
for(int i=1;i<=n;i++){
    pow=(1LL*pow*k)%p;
    ans=(ans+(1LL*pow*((1LL*mf[i-1]*inv_mf[i])%p)))%p;
}

P1593 因子和

甚水哉!

对 \(a\) 进行分解质因数,对于每个质因子,考虑利用公式:

\(ans=\prod{(1 + p + p^2 +...+ p^n)}\)

等比数列求和,完事儿。

P2424 约数和

考虑不走寻常路,利用等比数列计算各个约数的和,于是就可以很简单地利用整除分块解决。

P2260 [清华集训 2012] 模积和

还算比较简单的一道整除分块的练手。

对于题目的式子:

\(\sum^n_{i=1}{\sum^m_{j=1}{(n \mod{i})\times(m \mod{j})}}\)

我们进行一些变形,不妨设 \(n \le m\):

原式 \(=\sum^n_{i=1}\sum^m_{j=1}(n-\left \lfloor \frac{n}{i} \right \rfloor \times i)\times(m-\left \lfloor \frac{m}{j} \right \rfloor \times j)\)
\(=\sum^n_{i=1}(n-\left \lfloor \frac{n}{i} \right \rfloor \times i)\times \sum^m_{j=1}(m-\left \lfloor \frac{m}{j} \right \rfloor \times j)-\sum^n_{i=1}(n-\left \lfloor \frac{n}{i} \right \rfloor \times i)\times(m-\left \lfloor \frac{m}{i} \right \rfloor \times i)\)
\(=(n^2-\sum^n_{i=1}(\left \lfloor \frac{n}{i} \right \rfloor \times i))\times(m^2-\sum^m_{j=1}(\left \lfloor \frac{m}{j} \right \rfloor \times j))-\sum^n_{i=1}(nm-ni\times \left \lfloor \frac{n}{i} \right \rfloor-mi\times \left \lfloor \frac{m}{i} \right \rfloor+i^2 \times \left \lfloor \frac{n}{i} \right \rfloor \times \left \lfloor \frac{m}{i} \right \rfloor)\)

接着整除分块即可。

前一项乘积比较好做,板子;最后的一项有一点难度,让 \(r=\min(\min(\left \lfloor \frac{n}{\left \lfloor \frac{n}{l} \right \rfloor} \right \rfloor,\left \lfloor \frac{m}{\left \lfloor \frac{m}{l} \right \rfloor} \right \rfloor),n)\) 就可以了。

P6327 区间加区间 sin 和

最水的 Ynoi 题。

毫无奇淫技巧,朴实无华的线段树加上我们学前班就学过的和角公式,轻松水青(所以它不应该是青)。

P1069 [NOIP 2009 普及组] 细胞分裂

思路很好想,只需要比较 \(m_1\) 和 \(s_i\) 的每一种质因子的个数之差就可以了。

P5596【XR-4】题

这道题其实就是一道大水题。

考虑对方程进行转换:

\(y^2-x^2=ax+b\)
\(k(k+2x)=ax+b \ (k=y-x)\)
\(x(2k−a)=b−k^2\)
\(x=\frac{b-k^2}{2k-a}\)

于是,这道题就变成了枚举 \(k\) 的操作,极其无脑,极其简单。

P4931 [MtOI2018] 情侣?给我烧了!(加强版)

式子一半好推,一般难推。
\(ans=(C_{n}^{k})^2×k!×2^k×D_{n-k}\)。
主要难点在于推 \(D_i\)。
\(D_n\) 为 \(n\) 对情侣全都不配对的方案数。
最终结果为 \(D_n=4n(n-1)D_{n-1}+8n(n-1)^2D_{n-2}\),预处理即可。

posted @ 2026-08-29 20:14  Tri_Function  阅读(12)  评论(0)    收藏  举报