P3704 [SDOI2017]数字表格

首先根据题意写出答案的表达式

\[\large\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)}
\]

按常规套路改为枚举 \(d=\gcd(i,j)\)

(不妨设 \(n\le m\) )

\[\large\prod_{d=1}^n{f_d}^{\sum_{i=1}^n\sum_{j=1}^m~[(i,j)=d]}
\]

指数上的式子很熟悉了,单独拿出来推一下

\[\begin{aligned}
\sum_{i=1}^n\sum_{j=1}^m[(i,j)=d]
&=\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}[(i,j)=1]\\
&=\sum_{i=1}^{n/d}\sum_{j=1}^{m/d}\sum_{t\mid (i,j)}\mu(t)\\
&=\sum_{t=1}^{n/d}\mu(t)\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}[t|i][t|j]\\
&=\sum_{t=1}^{n/d}\mu(t)(n/dt)(m/dt)
\end{aligned}\]

代回原式

\[\large\prod_{d=1}^n{f_d}^{\sum_{t=1}^{n/d}\mu(t)(n/dt)(m/dt)}
\]

设 \(k=dt\) ,改为枚举 \(k,d\)

\[\large\prod_{k=1}^n\prod_{d\mid k}{f_d}^{\mu(k/d)(n/k)(m/k)}
\]
\[\large\prod_{k=1}^n\left(\prod_{d\mid k}{f_d}^{\mu(k/d)}\right)^{(n/k)(m/k)}
\]
\[\large\prod_{k=1}^n\left(\prod_{d\mid k}{f_{k/d}}^{\mu(d)}\right)^{(n/k)(m/k)}
\]

括号里的东西可以 \(O(n\log n)\) 预处理,然后整除分块计算就可以了

时间复杂度 \(O(n\log n+T\sqrt n\log n)\)

带 \(\log\) 是因为用到了快速幂

到这里已经可以 AC 了

但还是介绍一下 \(O(n\log\log n+T\sqrt n\log n)\) 的做法

可以理解为 dp ,设:

\[\large s_{i,n}=\prod_{d\mid n,d 只含前 i 种质因子}{f_{n/d}}^{\mu(d)}
\]
\[\large inv_{i,n}={s_{i,n}}^{-1}=\prod_{d\mid n,d 只含前 i 种质因子}{f_{n/d}}^{-\mu(d)}
\]

枚举质数 \(p_i\)

当 \(p_i\nmid n\) 时,显然 \(s_{i,n}=s_{i-1,n},inv_{i,n}=inv_{i-1,n}\)

当 \(p_i\mid n\) 时,需要考虑 \(d\) 中含因子 \(p_i\) 的个数

\(p_i\nmid d\) 的情况对 \(s_{i,n}\) 的贡献即为 \(s_{i-1,n}\)

\({p_i}^2\mid d\) 时 \(\mu(d)=0\) ,因此这时不产生贡献

若 \(p_i\mid d\) 且 \({p_i}^2\nmid d\) ,设 \(d=p_id'\) ,则贡献为

\[\prod_{d'\mid (n/p_i)}{f_{n/p_id'}}^{\mu(p_id')}
\]

\(p_i\) 与 \(d'\) 互质,因此 \(\mu(p_id')=\mu(p_i)\mu(d')=-\mu(d')\)

代回之后发现贡献就是 \(inv_{i-1,n/p_i}\)

故 \(s_{i,n}=s_{i-1,n}\times inv_{i-1,n/p_i}\)

显然 \(inv_{i,n}=inv_{i-1,n}\times s_{i-1,n/p_i}\)

综上,转移方程为

\[s_{i,n}=\begin{cases}s_{i-1,n}&(p_i\nmid n)\\ s_{i-1,n}\times invs_{i-1,n/p_i} & (p_i\mid n)\end{cases}
\]
\[inv_{i,n}=\begin{cases}inv_{i-1,n}&(p_i\nmid n)\\ inv_{i-1,n}\times s_{i-1,n/p_i} &(p_i\mid n)\end{cases}
\]

初始状态为 \(s_{0,n}=f_n,inv_{0,n}={f_n}^{-1}\)

但是直接求逆元会导致复杂度升到 \(O(n\log P)\) ,就前功尽弃了

所以还要用一下线性求逆元的方法

  1. #include<stdio.h>
  2. const int N=1000010,P=1e9+7; int T,n,m,ans,t1,t2;
  3. int t,cnt,suf,I,p[100000],s[N],inv[N],v[N],pre[N];
  4. inline int min(int x,int y) { return x<y?x:y; }
  5. inline int power(int x,int y) {
  6. int s=1;
  7. while (y) (y&1)&&(s=1ll*s*x%P),x=1ll*x*x%P,y>>=1;
  8. return s;
  9. }
  10. int main() {
  11. s[1]=pre[0]=pre[1]=inv[0]=suf=1;
  12. for (int i=2; i<N; ++i) { //线性筛、初始化 s
  13. v[i]||(p[++cnt]=i);
  14. for (int j=1; j<=cnt&&(t=p[j]*i)<N; ++j) {
  15. v[t]=1;
  16. if (i%p[j]==0) break;
  17. }
  18. (s[i]=s[i-2]+s[i-1])>=P&&(s[i]-=P);
  19. pre[i]=1ll*pre[i-1]*s[i]%P;
  20. }
  21. I=power(pre[N-1],P-2);
  22. for (int i=N-1; i; --i) //初始化 inv
  23. inv[i]=1ll*pre[i-1]*suf%P*I%P,
  24. suf=1ll*suf*s[i]%P;
  25. for (int i=1,j; i<=cnt; ++i) // dp
  26. for (j=(N-1)/p[i],t=j*p[i]; j; --j,t-=p[i])
  27. s[t]=1ll*s[t]*inv[j]%P,
  28. inv[t]=1ll*inv[t]*s[j]%P;
  29. for (int i=2; i<N; ++i) s[i]=1ll*s[i]*s[i-1]%P;
  30. for (int i=2; i<N; ++i) inv[i]=1ll*inv[i]*inv[i-1]%P;
  31. //存储 s 和 inv 的前缀积,便于整除分块计算
  32. for (scanf("%d",&T); T; --T) {
  33. scanf("%d%d",&n,&m),ans=1;
  34. for (int l=1,r,mn=min(n,m); l<=mn; l=r+1) //整除分块
  35. r=min(n/(t1=n/l),m/(t2=m/l)),
  36. t=1ll*s[r]*inv[l-1]%P,
  37. ans=1ll*ans*power(t,1ll*t1*t2%(P-1))%P;
  38. printf("%d\n",ans);
  39. }
  40. return 0;
  41. }

P5518 [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题

这个题要麻烦得多

全程大力推式子 虽然非常不基础 但确实是针对性很强的练习题

\[\large\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\dfrac{\operatorname{lcm}(i,j)}{\gcd(i,k)}\right)^{f(type)}
\]

等于

\[\large\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\left(\dfrac{ij}{\gcd(i,j)\gcd(i,k)}\right)^{f(type)}
\]

可以转化为以下两个子问题:

\[\large M(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{f(type)}
\]
\[\large N(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{f(type)}
\]

答案为

\[\large \dfrac{M(A,B,C)\times M(B,A,C)}{N(A,B,C)\times N(A,C,B)}
\]

下面按 \(type\) 的取值分为三种情况讨论

\(\Large \textbf{1. type=0,f(type)=1}\)

\[\large M(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci=\prod_{i=1}^Ai^{BC}=(A!)^{BC}
\]

预处理阶乘,快速幂回答询问,复杂度为 \(O(n+T\log n)\) ( \(n\) 与 \(A,B,C\) 同级, \(T\) 为询问组数,下同)

\[\large N(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)=\left(\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)\right)^C
\]

括号内的式子和上题基本一致 过程不详细写了

设 \(D=\min(A,B)\) ,则

\[\large N(A,B,C)=\prod_{t=1}^D\left(\prod_{d \mid t}d^{\mu(t/d)}\right)^{(A/t)(B/t)C}
\]

依然是预处理括号内的式子 然后整除分块

时间复杂度 \(O(n\log n+T\sqrt n\log n)\)

预处理也可以做到 \(O(n\log \log n)\) ,但对本题而言基本没啥优化效果

\(\Large \textbf{2. type=1,f(type)=i×j×k}\)

\[\large M(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^Ci^{i\times j\times k}=\prod_{i=1}^Ai^{i(\sum_{j=1}^Bj)(\sum_{k=1}^Ck)}
\]

令 \(S(n)=\sum\limits_{i=1}^ni=\dfrac{n(n+1)}2\)

\[\large M(A,B,C)=\left(\prod_{i=1}^Ai^i\right)^{S(B)S(C)}
\]

括号内的式子可以 \(O(n\log n)\) 预处理,然后快速幂回答询问

\[\large N(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{i\times j\times k}=\left(\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^{i\times j}\right)^{S(C)}
\]

括号里的式子拿出来推一下

\[\large \begin{aligned}\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)^{i\times j}
&=\prod_{d=1}^D\prod_{i=1}^A\prod_{j=1}^Bd^{i\times j\times [(i,j)=d]}
=\prod_{d=1}^D\prod_{i=1}^{A/d}\prod_{j=1}^{B/d}d^{id\times jd\times [(i,j)=1]}
=\prod_{d=1}^Dd^{d^2\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}ij[(i,j)=1]}\\
&=\prod_{d=1}^Dd^{d^2\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}ij\sum_{t\mid (i,j)}~\mu(t)}
=\prod_{d=1}^Dd^{d^2\sum_{t=1}^{D/d}\mu(t)\sum_{i=1}^{A/dt}it\sum_{j=1}^{B/dt}jt}
=\prod_{d=1}^Dd^{d^2\sum_{t=1}^{D/d}\mu(t)t^2S(A/dt)S(B/dt)}\\
&=\prod_{d=1}^D\prod_{t=1}^{D/d}d^{\mu(t)(dt)^2S(A/dt)S(B/dt)}
=\prod_{t'=1}^D\prod_{d\mid t'}d^{\mu(t'/d)t'^2S(A/t')S(B/t')}
=\prod_{t'=1}^D\left(\prod_{d\mid t'}d^{\mu(t'/d)}\right)^{t'^2S(A/t')S(B/t')}
\end{aligned}\]

推到这里就可以了,代回 \(N(A,B,C)\) 的表达式

\[\large N(A,B,C)=\prod_{t=1}^D\left(\prod_{d\mid t}d^{\mu(t/d)}\right)^{t^2S(A/t)S(B/t)S(C)}
\]

括号里的式子预处理过了 然后还是整除分块

时间复杂度 \(O(n\log n+T\sqrt n\log n)\)

\(\Large\textbf{3. type=2,f(type)=gcd(i,j,k)}\)

\[\large M(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C i^{\gcd(i,j,k)}=\prod_{i=1}^Ai^{\sum_{j=1}^B\sum_{k=1}^C\gcd(i,j,k)}
\]

指数可以考虑欧拉反演

\[\large \sum_{j=1}^B\sum_{k=1}^C\gcd(i,j,k)
=\sum_{j=1}^B\sum_{k=1}^C\sum_{d\mid \gcd(i,j,k)}\varphi(d)
=\sum_{d\mid i}\varphi(d)\sum_{j=1}^B\sum_{k=1}^C[d|j][d|k]
=\sum_{d\mid i}\varphi(d)(B/d)(C/d)\]

设 \(E=\min(A,B,C)\)

\[\large M(A,B,C)=\prod_{i=1}^Ai^{\sum_{d\mid i}\varphi(d)(B/d)(C/d)}
=\prod_{d=1}^E\left(\prod_{i'=1}^{A/d}i'd\right)^{\varphi(d)(B/d)(C/d)}
=\prod_{d=1}^E\left((A/d)!\times d^{A/d}\right)^{\varphi(d)(B/d)(C/d)}\]
\[\large M(A,B,C)=\prod_{d=1}^E(A/d)!^{\varphi(d)(B/d)(C/d)}\times \prod_{d=1}^Ed^{\varphi(d)(A/d)(B/d)(C/d)}
\]

两部分都可以整除分块做

接下来是本题最难处理的式子了

\[\large N(A,B,C)=\prod_{i=1}^A\prod_{j=1}^B\prod_{k=1}^C\gcd(i,j)^{\gcd(i,j,k)}
\]

改为枚举 \(\gcd(i,j)\)

\[\large N(A,B,C)=\prod_{d=1}^Dd^{\sum_{i=1}^A\sum_{j=1}^B[(i,j)=d]\sum_{k=1}^C\gcd(d,k)}
\]

指数还是常规反演

\[\large \sum_{i=1}^A\sum_{j=1}^B[(i,j)=d]=\sum_{i=1}^{A/d}\sum_{j=1}^{B/d}\sum_{t\mid (i,j)}\mu(t)=\sum_{t=1}^{D/d}\mu(t)(A/dt)(B/dt)
\]
\[\large \sum_{k=1}^C\gcd(d,k)=\sum_{k=1}^C\sum_{t'\mid (d,k)}\varphi(t')=\sum_{t'\mid d}\varphi(t')(C/t')
\]
\[\large N(A,B,C)=\prod_{d=1}^Dd^{\sum_{t=1}^{D/d}\mu(t)(A/dt)(B/dt)\sum_{t'\mid d}\varphi(t')(C/t')}
\]

枚举因数看起来不对劲,换一下枚举方式

\[\large N(A,B,C)=\prod_{t'=1}^E\prod_{d'=1}^{D/t'}(d't')^{\varphi(t')(C/t')\sum_{t=1}^{D/d't'}\mu(t)(A/d't't)(B/d't't)}
\]

式子有点丑 所以替换一次字母(

\[\large N(A,B,C)=\prod_{i=1}^E\prod_{j=1}^{D/i}(ij)^{\varphi(i)(C/i)\sum_{k=1}^{D/ij}\mu(k)(A/ijk)(B/ijk)}
\]

似乎很难继续推了

但通过看官方题解我们了解到一个技巧,把 \(i,j\) 拆开分别算贡献

\[\large N(A,B,C)=\prod_{i=1}^E\prod_{j=1}^{D/i}i^{\varphi(i)(C/i)\sum_{k=1}^{D/ij}\mu(k)(A/ijk)(B/ijk)}\times \prod_{i=1}^E\prod_{j=1}^{D/i}j^{\varphi(i)(C/i)\sum_{k=1}^{D/ij}\mu(k)(A/ijk)(B/ijk)}
\]

对于第一部分,枚举 \(t=jk\)

\[\large\prod_{i=1}^Ei^{\varphi(i)(C/i)\sum_{t=1}^{D/i}~(A/it)(B/it)\sum_{k\mid t}\mu(k)}
\]
\[\large\prod_{i=1}^Ei^{\varphi(i)(C/i)\sum_{t=1}^{D/i}~(A/it)(B/it)[t=1]}
\]

发现只有 \(t=1\) 的情况能对答案产生贡献

\[\large\prod_{i=1}^Ei^{\varphi(i)(A/i)(B/i)(C/i)}
\]

而我们在 \(M(A,B,C)\) 中也算出过相同的式子:

\[\large M(A,B,C)=\prod_{d=1}^E(A/d)!^{\varphi(d)(B/d)(C/d)}\times \prod_{d=1}^Ed^{\varphi(d)(A/d)(B/d)(C/d)}
\]

所以直接约掉就好了

最后来处理第二部分

\[\large \prod_{i=1}^E\prod_{j=1}^{D/i}j^{\varphi(i)(C/i)\sum_{k=1}^{D/ij}\mu(k)(A/ijk)(B/ijk)}
\]
\[\large \prod_{i=1}^E\left(\prod_{j=1}^{D/i}j^{\sum_{k=1}^{D/ij}\mu(k)(A/ijk)(B/ijk)}\right)^{\varphi(i)(C/i)}
\]

同样枚举 \(t=jk\)

\[\large \prod_{i=1}^E\left(\prod_{t=1}^{D/i}\prod_{j\mid t}j^{\mu(t/j)(A/it)(B/it)}\right)^{\varphi(i)(C/i)}
\]

简单整理一下

\[\large \prod_{i=1}^E\left(\prod_{t=1}^{D/i}\left(\prod_{d\mid t}d^{\mu(t/d)}\right)^{(A/it)(B/it)}\right)^{\varphi(i)(C/i)}
\]

最内层括号中的式子预处理过了

可以两层整除分块做,时间复杂度 \(O(n^{3/4}\log n)\)

还有个 \(O(n^{2/3}\log n)\) 的做法,虽然我没有写,而且也证不来复杂度,但还是提一下

之前我们算过

\[\large\prod_{i=1}^A\prod_{j=1}^B\gcd(i,j)=\prod_{t=1}^D\left(\prod_{d\mid T}d^{\mu(t/d)}\right)^{(A/t)(B/t)}
\]

带入到现在的式子里就是

\[\large\prod_{i=1}^E\left(\prod_{j=1}^{A/i}\prod_{k=1}^{B/i}\gcd(j,k)\right)^{\varphi(i)(C/i)}
\]

预处理 \(A,B\le n^{2/3}\) 的所有 \(\prod\limits_{i=1}^A\prod\limits_{j=1}^B\gcd(i,j)\)

\(i\) 需要一层整除分块

对于括号内的部分,当 \(i\ge n^{1/3}\) 时直接用预处理的值即可,当 \(i<n^{1/3}\) 时需要再套一层整除分块

时间复杂度证明可类比杜教筛 我都不会证

至此这道题的推式子部分终于结束了

写 \(O(n\log n+Tn^{3/4}\log n)\) 或者 \(O(n^{4/3}+Tn^{2/3}\log n)\) 的做法都能通过

细节很多 需要耐心调试

但很小的错误都能导致答案产生巨大误差 所以能过样例就基本就没问题了 调试难度不大

象征性地放一下代码(虽然丑到只有编译器看得懂

  1. #include<stdio.h>
  2. #define M0(A,B) power(fac[A],1ll*B*C%P2)
  3. #define M1(A,B) power(pow[A],1ll*S1(B)*S1(C)%P2)
  4. const int N=100001; int A,B,C,D,E,T,P,P2,t,cnt,ans,p[10000];
  5. int s[N],inv[N],S[N],INV[N],fac[N],pow[N],phi[N],v[N];
  6. inline int min(int x,int y) { return x<y?x:y; }
  7. inline int S1(int x) { return (1ll*x*(x+1)>>1)%P2; }
  8. inline int power(int x,int y) {
  9. int ans=1;
  10. while (y) (y&1)&&(ans=1ll*ans*x%P),x=1ll*x*x%P,y>>=1;
  11. return ans;
  12. }
  13. void prework() {
  14. phi[1]=fac[0]=pow[0]=S[0]=INV[0]=1;
  15. s[0]=s[1]=inv[0]=inv[1]=1;
  16. for (int i=2; i<N; ++i) {
  17. v[i]||(p[++cnt]=i,phi[i]=i-1);
  18. for (int j=1; j<=cnt&&(t=p[j]*i)<N; ++j) {
  19. v[t]=1,phi[t]=phi[i]*(p[j]-1);
  20. if (i%p[j]==0) { phi[t]+=phi[i]; break; }
  21. }
  22. (phi[i]+=phi[i-1])>=P2&&(phi[i]-=P2);
  23. }
  24. for (int i=2; i<N; ++i) s[i]=i,inv[i]=1ll*(P-P/i)*inv[P%i]%P;
  25. for (int i=1; i<=cnt; ++i)
  26. for (int j=(N-1)/p[i],t=j*p[i]; j; --j,t-=p[i])
  27. s[t]=1ll*s[t]*inv[j]%P,inv[t]=1ll*inv[t]*s[j]%P;
  28. for (int i=1; i<N; ++i)
  29. S[i]=1ll*S[i-1]*power(s[i],1ll*i*i%P2)%P,
  30. INV[i]=1ll*INV[i-1]*power(inv[i],1ll*i*i%P2)%P,
  31. s[i]=1ll*s[i-1]*s[i]%P,inv[i]=1ll*inv[i-1]*inv[i]%P,
  32. fac[i]=1ll*fac[i-1]*i%P,pow[i]=1ll*pow[i-1]*power(i,i)%P;
  33. }
  34. int N0(int A,int B,int C) {
  35. int D=min(A,B),ans=1;
  36. for (int l=1,r,t1,t2; l<=D; l=r+1)
  37. r=min(A/(t1=A/l),B/(t2=B/l)),
  38. ans=1ll*ans*power(1ll*s[r]*inv[l-1]%P,1ll*t1*t2%P2)%P;
  39. return power(ans,P2-C);
  40. }
  41. int N1(int B,int C) {
  42. D=min(A,B),ans=1;
  43. for (int l=1,r,t,t1,t2; l<=D; l=r+1)
  44. r=min(A/(t1=A/l),B/(t2=B/l)),
  45. t=1ll*S1(t1)*S1(t2)%P2,
  46. ans=1ll*ans*power(1ll*S[r]*INV[l-1]%P,t)%P;
  47. return power(ans,P2-S1(C));
  48. }
  49. int M2(int A,int B) {
  50. E=min(min(A,B),C),ans=1;
  51. for (int l=1,r,t,t1,t2,t3; l<=E; l=r+1)
  52. r=min(min(A/(t1=A/l),B/(t2=B/l)),C/(t3=C/l)),
  53. t=1ll*t2*t3%P2*(phi[r]-phi[l-1]+P2)%P2,
  54. ans=1ll*ans*power(fac[t1],t)%P;
  55. return ans;
  56. }
  57. int N2(int B,int C) {
  58. E=min(D=min(A,B),C),ans=1;
  59. for (int l=1,r,t1,t2,t3; l<=E; l=r+1)
  60. r=min(min(A/(t1=A/l),B/(t2=B/l)),C/(t3=C/l)),
  61. ans=1ll*ans*N0(t1,t2,1ll*t3*(phi[r]-phi[l-1]+P2)%P2)%P;
  62. return ans;
  63. }
  64. int main() {
  65. scanf("%d%d",&T,&P),P2=P-1,prework();
  66. while (T--)
  67. scanf("%d%d%d",&A,&B,&C),t=1ll*M0(A,B)*M0(B,A)%P,
  68. printf("%d ",1ll*t*N0(A,B,C)%P*N0(A,C,B)%P),
  69. printf("%d ",1ll*M1(A,B)*M1(B,A)%P*N1(B,C)%P*N1(C,B)%P),
  70. printf("%d\n",1ll*M2(A,B)*M2(B,A)%P*N2(B,C)%P*N2(C,B)%P);
  71. return 0;
  72. }

[SDOI2017]数字表格 & [MtOI2019]幽灵乐团的更多相关文章

  1. BZOJ:4816: [Sdoi2017]数字表格

    4816: [Sdoi2017]数字表格 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 501  Solved: 222[Submit][Status ...

  2. [Sdoi2017]数字表格 [莫比乌斯反演]

    [Sdoi2017]数字表格 题意:求 \[ \prod_{i=1}^n \prod_{j=1}^m f[(i,j)] \] 考场60分 其实多推一步就推倒了... 因为是乘,我们可以放到幂上 \[ ...

  3. 【BZOJ 4816】 4816: [Sdoi2017]数字表格 (莫比乌斯)

    4816: [Sdoi2017]数字表格 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 666  Solved: 312 Description Do ...

  4. P3704 [SDOI2017]数字表格

    P3704 [SDOI2017]数字表格 链接 分析: $\ \ \ \prod\limits_{i = 1}^{n} \prod\limits_{j = 1}^{m} f[gcd(i, j)]$ $ ...

  5. [SDOI2017]数字表格 --- 套路反演

    [SDOI2017]数字表格 由于使用markdown的关系 我无法很好的掌控格式,见谅 对于这么简单的一道题竟然能在洛谷混到黑,我感到无语 \[\begin{align*} \prod\limits ...

  6. 题解-MtOI2019 幽灵乐团

    题面 MtOI2019 幽灵乐团 给定 \(p\),\(Cnt\) 组测试数据,每次给 \(a,b,c\),求 \[\prod_{i=1}^a\prod_{j=1}^b\prod_{k=1}^c\le ...

  7. 题解-[SDOI2017]数字表格

    题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) ...

  8. P5518 [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题

    瞎扯 建议在阅读题解之前欣赏这首由普莉兹姆利巴姐妹带来的的合奏. Q:你参加省选吗?不是说好了考完 NOIP 就退吗. A:对啊. Q:那你学这玩意干啥? A:对啊,我学这玩意干啥? 写这题的动机? ...

  9. bzoj4816 [Sdoi2017]数字表格

    Description Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师 ...

随机推荐

  1. Bristol大学密码学博士生的五十二个知识点

    Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...

  2. Python Revisited Day 09 (调试、测试与Profiling)

    目录 9.1 调试 9.1.1 处理语法错误 9.1.2 处理运行时错误 9.1.3 科学的调试 9.2 单元测试 9.3 Profiling 9.1 调试 定期地进行备份是程序设计中地一个关键环节- ...

  3. Windows环境下使用Linux命令

    1.说明 如何在Windows环境下使用Linux命令, 这是一个屡见不鲜的问题, 而且已经有很多解决方法, 下面仅推荐几个我觉得好用的工具, 这些工具可能就是我们常用的软件, 而且已经在Window ...

  4. 【工控老马】OPC通讯协议解析-OPC七问

    1 通讯步骤 1.1 第一问 OPC Client和OPC Server之间通讯谁是主动的? 答:当然是OPC Client. 1.2 第二问 OPC Client第一次动作做了什么? 答:从大多数O ...

  5. css基础-1

    css简介 一.CSS 指层叠样式表 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题 外部样式表可以极大提高工作效率 外部 ...

  6. CSS基础 阴影相关属性设置

    一.字体阴影属性名:text-shadow:水平偏移量 垂直偏移量 模糊度 阴影颜色: html代码: <div>农夫山泉有点甜</div>css代码: div{ font-s ...

  7. 我踩过的Django的坑

    把自己在使用Django过程中吃过的亏 踩过的坑 记录一下 1. unique_together传的是元组 正确:unique_together = (('app_id', 'module_id', ...

  8. VMware_克隆机器后主机Ping不同虚拟机,虚拟机能Ping通主机

    使用vm的克隆功能克隆一个系统,因为我克隆的系统使用的是静态IP,所以修改克隆机的ip地址,并且也修改MAC地址,启动后两个虚拟机,ping了下主机IP能Ping通,但是使用主机Ping虚拟机时发现P ...

  9. vue3.0 没有 vue.condig.js 解决

    第一次用 vue3.0 ,发现没有vue.config.js  ,只有一个babel.config.js 怎么办? 需要在根目录手动添加一个即可,如下 相关的配置说明 module.exports = ...

  10. 如何在 CentOS 上安装 dos2unix 和 unix2dos 命令

    yum install -y dos2unix 注意:以上安装包既包含 dos2unix 命令,又包含 unix2dos 命令.