数学练习(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}\),预处理即可。

浙公网安备 33010602011771号