洛谷题面传送门

一道究极恶心的毒瘤六合一题,式子推了我满满两面 A4 纸……

首先我们可以将式子拆成:

\[ans=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\dfrac{ij}{\gcd(i,j)\gcd(i,j)})^{f(type)}
\]

也就是说我们需要算出以下四项式子的值:

\[\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci^{f(type)}
\]
\[\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Cj^{f(type)}
\]
\[\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\dfrac{1}{\gcd(i,j)})^{f(type)}
\]
\[\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\dfrac{1}{\gcd(i,k)})^{f(type)}
\]

显然前两项与后两项是等价的,因此我们只需算出:

\[f_1(type)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci^{f(type)}
\]

\[f_2(type)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\gcd(i,j))^{f(type)}
\]

即可求出答案。


考虑对 \(type\) 进行分类讨论,首先是 \(type=0\),那么

\[f_1(0)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci
\]

考虑每个 \(i\) 的贡献,稍微想想即可得到:

\[f_1(0)=(A!)^{BC}
\]

然后是 \(f_2(0)\),套路地枚举 \(\gcd(i,j)\) 有

\[\begin{aligned}
f_2(0)&=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C\gcd(i,j)\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{i=1}^A\sum\limits_{j=1}^B[\gcd(i,j)=d]})^C\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{i=1}^{A/d}\sum\limits_{j=1}^{B/d}[\gcd(i,j)=1]})^C\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{p}\mu(p)\lfloor\frac{A}{dp}\rfloor\lfloor\frac{B}{dp}\rfloor})^C\\
\end{aligned}
\]

最右边那个 \(k\) 次方显然可以忽略掉不管它,最后求个快速幂即可。考虑对里面的 \(dp\) 进行二维的整除分块,那么答案的式子可以化为:

\[\begin{aligned}
f_2(0)=(\prod\limits_{dp}g_1(dp)^{\lfloor\frac{A}{dp}\rfloor\lfloor\frac{B}{dp}\rfloor})^C
\end{aligned}
\]

其中

\[g_1(x)=\prod\limits_{d·p=x}d^{\mu(p)}
\]

考虑整除分块,对于一段区间 \([L,R]\),满足 \(\forall x\in[L,R]\) 均有 \(\lfloor\dfrac{A}{x}\rfloor=\lfloor\dfrac{A}{L}\rfloor,\lfloor\dfrac{B}{x}\rfloor=\lfloor\dfrac{B}{L}\rfloor\),我们这样计算它们的贡献:

\[\prod\limits_{i=L}^R(g_1(i)^{\lfloor\frac{A}{i}\rfloor\lfloor\frac{B}{i}\rfloor})^C=(\prod\limits_{i=L}^Rg_1(i))^{\lfloor\frac{A}{i}\rfloor\lfloor\frac{B}{i}\rfloor·C}
\]

预处理前缀积即可 \(\mathcal O(1)\) 计算,时间复杂度 \(\mathcal O(\log n\sqrt{n})\)。


接下来是 \(type=1\) 的情况,个人感觉与 \(type=0\) 的情况大差不差,毕竟指数上都只与 \(i,j,k\) 本身而不涉及到它们的 \(\gcd\) 之类,只不过指数上枚举变量的次数稍微高了一点点,导致情况较于 \(type=0\) 略有一点点繁琐。

首先是 \(f_1(1)\)

\[f_1(1)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci^{ijk}
\]

还是考虑每个 \(i\) 的贡献被累计了多少次:

\[\begin{aligned}
f_1(0)&=(A!)^{\sum\limits_{j=1}^B\sum\limits_{k=1}^Cjk}\\
&=(A!)^{\frac{B(B+1)}{2}·\frac{C(C+1)}{2}}
\end{aligned}
\]

一波快速幂带走。

其次是 \(f_2(1)\)

\[\begin{aligned}
f_2(1)&=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C\gcd(i,j)^{ijk}\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{i=1}^A\sum\limits_{j=1}^Bij[\gcd(i,j)=d]})^{\sum\limits_{k=1}^Ck}\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{i=1}^{A/d}\sum\limits_{j=1}^{B/d}ijd^2[\gcd(i,j)=1]})^{\frac{C(C+1)}{2}}\\
&=(\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{p}\mu(p)d^2p^2·s(\lfloor\frac{A}{dp}\rfloor)s(\lfloor\frac{B}{dp}\rfloor)})^{\frac{C(C+1)}{2}}\\
\end{aligned}
\]

其中 \(s(i)=\dfrac{i(i+1)}{2}\)

那么我们还是枚举 \(dp\),按照 \(f_2(0)\) 的套路设一个 \(g_2(x)\),定义如下:

\[g_2(x)=\prod\limits_{d·p=x}d^{d^2p^2\mu(p)}
\]

那么考虑对 \(dp\) 进行整除分块,那么

\[f_2(1)=(\prod\limits_{dp=1}^{\min(A,B)}g_2(dp)^{s(\lfloor\frac{A}{dp}\rfloor)s(\lfloor\frac{B}{dp}\rfloor)})^{\frac{C(C+1)}{2}}
\]

预处理 \(g_2(dp)\) 的前缀积然后对 \(dp\) 整除分块即可。


最后是 \(type=2\) 的情况

先考虑 \(f_1(2)\)

\[f_1(2)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^Ci^{\gcd(i,j,k)}
\]

上来先把 \(\gcd\) 反演掉:

\[\begin{aligned}
f_1(2)&=\prod\limits_{d=1}^{\min(A,B,C)}\prod\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}(id)^{d·\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}\sum\limits_{k=1}^{\lfloor\frac{C}{d}\rfloor}[\gcd(i,j,k)=1]}\\
&=\prod\limits_{d=1}^{\min(A,B,C)}\prod\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}(id)^{d·\sum\limits_{p\mid i}\mu(p)\lfloor\frac{B}{dp}\rfloor\lfloor\frac{C}{dp}\rfloor}
\end{aligned}
\]

把 \(p\) 提到外面来

\[\begin{aligned}
f_1(2)&=\prod\limits_{d=1}^{\min(A,B,C)}\prod\limits_{p}(\prod\limits_{i\in[1,\lfloor\frac{A}{d}\rfloor]\&p\mid i}(id)^{d·\mu(p)})^{\lfloor\frac{B}{dp}\rfloor\lfloor\frac{C}{dp}\rfloor}
\end{aligned}
\]

然后按照套路枚举 \(\dfrac{i}{p}\)

\[\begin{aligned}
f_1(2)&=\prod\limits_{d=1}^{\min(A,B,C)}\prod\limits_{p}(\prod\limits_{i=1}^{\lfloor\frac{A}{dp}\rfloor}(idp)^{d·\mu(p)})^{\lfloor\frac{B}{dp}\rfloor\lfloor\frac{C}{dp}\rfloor}
\end{aligned}
\]

然后枚举 \(dp\),根据 \(\mu*i=\varphi\) 可知 \(\sum\limits_{d·p=x}d·\mu(p)=\varphi(x)\),于是

\[f_1(2)=\prod\limits_{x=1}^{\min(A,B,C)}(\prod\limits_{i=1}^{\lfloor\frac{A}{x}\rfloor}(ix)^{\varphi(x)})^{\lfloor\frac{B}{x}\rfloor\lfloor\frac{C}{x}\rfloor}
\]

外面的东西显然整除分块一下就好了,里面的东西

\[\prod\limits_{i=1}^{\lfloor\frac{A}{x}\rfloor}(ix)^{\varphi(x)}
\]

显然等于

\[\begin{aligned}
&\prod\limits_{i=1}^{\lfloor\frac{A}{x}\rfloor}i^{\varphi(x)}·x^{\varphi(x)}\\
=&((\lfloor\dfrac{A}{x}\rfloor)!)^{\varphi(x)}·(x^{\varphi(x)})^{\lfloor\frac{A}{x}\rfloor}
\end{aligned}
\]

然后套路地预处理 \(g_3=x^{\varphi(x)}\) 的前缀积,以及 \(\varphi(x)\) 的前缀和即可在整除分块的过程中 \(\mathcal O(1)\) 求出式子的值,注意 \(\varphi(x)\) 的前缀和应 \(\bmod(MOD-1)\) 而不是 \(\bmod MOD\),因为 \(\varphi(x)\) 的前缀和作用在指数上。

时间复杂度 \(\sqrt{n}\log n\)

然后是最精神污染的一个式子:

\[f_2(2)=\prod\limits_{i=1}^A\prod\limits_{j=1}^B\prod\limits_{k=1}^C(\gcd(i,j))^{\gcd(i,j,k)}
\]

按照 P1587 的套路,碰到两个 \(\gcd\) 咱们最好不要莽,要一个个反演,因此考虑先反演下面这个 \(\gcd\):

\[\begin{aligned}
f_2(2)&=\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{i=1}^{\lfloor\frac{A}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{B}{d}\rfloor}[\gcd(i,j)=1]\sum\limits_{k=1}^C\gcd(d,k)}\\
&=\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{p}^{\lfloor\frac{\min(A,B)}{d}\rfloor}\mu(p)\lfloor\frac{A}{dp}\rfloor\lfloor\frac{B}{dp}\rfloor\sum\limits_{k=1}^C\gcd(d,k)}
\end{aligned}
\]

发现后面有个 \(\sum\limits_{k=1}^C\gcd(d,k)\),考虑对这个东西单独推个式子:

\[\begin{aligned}
g_4(d,C)&=\sum\limits_{k=1}^C\gcd(d,k)\\
&=\sum\limits_{x\mid d}x·\sum\limits_{i=1}^{\lfloor\frac{C}{x}\rfloor}[i\perp\dfrac{d}{x}]\\
&=\sum\limits_{x\mid d}x·\sum\limits_{y\mid\frac{d}{x}}\mu(y)\lfloor\dfrac{C}{xy}\rfloor
\end{aligned}
\]

套路地枚举 \(xy=T\) 可得:

\[g_4(d,C)=\sum\limits_{T\mid d}\lfloor\dfrac{C}{T}\rfloor\sum\limits_{x\mid T}x\mu(\dfrac{T}{x})
\]

这已经是本题中第二次看到这个式子了:

\[\sum\limits_{x\mid T}x\mu(\dfrac{T}{x})=\varphi(T)
\]

于是

\[g_4(d,C)=\sum\limits_{T\mid d}\lfloor\dfrac{C}{T}\rfloor\varphi(T)
\]

带回去

\[f_2(2)=\prod\limits_{d=1}^{\min(A,B)}d^{\sum\limits_{p}^{\lfloor\frac{\min(A,B)}{d}\rfloor}\mu(p)\lfloor\frac{A}{dp}\rfloor\lfloor\frac{B}{dp}\rfloor\sum\limits_{T\mid d}\lfloor\frac{C}{T}\rfloor\varphi(T)}
\]

按照这里总结出来的套路,看到先枚举 \(i\) 再枚举 \(j\mid i\) 的求和/积式我们可以考虑交换求和/积的顺序,先枚举 \(j\) 再枚举 \(i\),这样会出现下取整,就可以整除分块了。

因此考虑先枚举 \(T\) 再枚举 \(d\),有:

\[f_2(2)=\prod\limits_{T=1}^{\min(A,B)}\prod\limits_{d=1}^{\lfloor\frac{\min(A,B)}{T}\rfloor}(dT)^{\sum\limits_{p}\mu(p)\lfloor\frac{A}{dTp}\rfloor\lfloor\frac{B}{dTp}\rfloor\lfloor\frac{C}{T}\rfloor\varphi(T)}
\]

然后考虑拆开来:

\[f_2(2)=\prod\limits_{T=1}^{\min(A,B)}(T^{\varphi(T)\lfloor\frac{C}{T}\rfloor})^{\sum\limits_{d}\sum\limits_{p}\mu(p)\lfloor\frac{A}{dTp}\rfloor\lfloor\frac{B}{dTp}\rfloor}·\prod\limits_{d=1}^{\lfloor\frac{\min(A,B)}{T}\rfloor}(d^{\sum\limits_{p}\mu(p)\lfloor\frac{A}{dTp}\rfloor\lfloor\frac{B}{dTp}\rfloor})^{\varphi(T)\lfloor\frac{C}{T}\rfloor}
\]

先考虑前面的式子:

\[(T^{\varphi(T)\lfloor\frac{C}{T}\rfloor})^{\sum\limits_{d}\sum\limits_{p}\mu(p)\lfloor\frac{A}{dTp}\rfloor\lfloor\frac{B}{dTp}\rfloor}
\]

考虑枚举 \(dp=x\),那么:

\[\begin{aligned}
\text{原式}&=(T^{\varphi(T)\lfloor\frac{C}{T}\rfloor})^{\sum\limits_{x}\sum\limits_{p\mid x}\mu(p)\lfloor\frac{A}{Tx}\rfloor\lfloor\frac{B}{Tx}\rfloor}\\
&=(T^{\varphi(T)\lfloor\frac{C}{T}\rfloor})^{\epsilon(x)\lfloor\frac{A}{Tx}\rfloor\lfloor\frac{B}{Tx}\rfloor}\\
&=(T^{\varphi(T)\lfloor\frac{C}{T}\rfloor})^{\lfloor\frac{A}{T}\rfloor\lfloor\frac{B}{T}\rfloor}
\end{aligned}
\]

对 \(T\) 整除分块一下,预处理 \(\varphi(T)\) 的前缀和即可 \(\mathcal O(1)\) 算出。


然后是后面的式子(胜利就在眼前!)

\[\prod\limits_{T=1}^{\min(A,B)}\prod\limits_{d=1}^{\lfloor\frac{\min(A,B)}{T}\rfloor}(d^{\sum\limits_{p}\mu(p)\lfloor\frac{A}{dTp}\rfloor\lfloor\frac{B}{dTp}\rfloor})^{\varphi(T)\lfloor\frac{C}{T}\rfloor}
\]

还是对 \(T\) 整除分块,然后枚举 \(dp=x\),那么上面的式子可以写成:

\[\prod\limits_{T=1}^{\min(A,B)}\prod\limits_{x=1}^{\lfloor\frac{\min(A,B)}{T}\rfloor}((\prod\limits_{d\mid x}d^{\mu(p)})^{\lfloor\frac{A}{Tx}\rfloor\lfloor\frac{B}{Tx}\rfloor})^{\varphi(T)\lfloor\frac{C}{T}\rfloor}
\]

发现最里面的括号的东西就是在求 \(f_2(0)\) 时用到的 \(g_1(x)\),那么我们再套一个对 \(x\) 的整除分块即可。

根据整除分块里再套一个整除分块复杂度是 \(\sum\limits_{x,\exists k,s.t.\lfloor\frac{n}{k}\rfloor=x}\sqrt{x}=n^{0.75}\) 可知这一部分复杂度为 \(n^{0.75}\log n\)

于是这题就做完了,时间复杂度 \(n\log n+Tn^{0.75}\log n\)。


关于此题的常数问题,由于取模运算较多,可以使用快速取模优化常数,具体可见 chenxia25 神仙的这篇博客

const int MAXV=1e5;
ll mod;
int pr[MAXV/5+5],prcnt=0,vis[MAXV+5],mu[MAXV+5],smu[MAXV+5],phi[MAXV+5];
int fac[MAXV+5],prd[MAXV+5],prd_inv[MAXV+5],prd_sq[MAXV+5],prd_sq_inv[MAXV+5];
int pre_ii[MAXV+5],inv_pre_ii[MAXV+5],pre_mul[MAXV+5],inv_pre_mul[MAXV+5];
int inv[MAXV+5],prd_phi[MAXV+5],prd_phi_inv[MAXV+5];
int sphi[MAXV+5];
__int128_t _base1=1,_base2=1;
inline int mol1(__int128_t x){return x-mod*(_base1*x>>64);}
inline int mol2(__int128_t x){return x-(mod-1)*(_base2*x>>64);}
int qpow(int x,int e){
if(e<0) e+=mod-1;int ret=1;
for(;e;e>>=1,x=mol1(1ll*x*x)) if(e&1) ret=mol1(1ll*ret*x);
return ret;
}
int work(int x,int y){return (!y)?1:((~y)?x:inv[x]);}
void sieve(int n){
for(int i=(inv[0]=inv[1]=1)+1;i<=n;i++) inv[i]=mol1(1ll*inv[mod%i]*(mod-mod/i));
mu[1]=phi[1]=1;
for(int i=(fac[0]=1);i<=n;i++) fac[i]=mol1(1ll*fac[i-1]*i);
for(int i=2;i<=n;i++){
if(!vis[i]) mu[i]=-1,pr[++prcnt]=i,phi[i]=i-1;
for(int j=1;j<=prcnt&&pr[j]*i<=n;j++){
vis[pr[j]*i]=1;
if(i%pr[j]==0){phi[i*pr[j]]=phi[i]*pr[j];break;}
mu[i*pr[j]]=-mu[i];phi[i*pr[j]]=phi[i]*phi[pr[j]];
}
}
for(int i=1;i<=n;i++) smu[i]=smu[i-1]+mu[i];
for(int i=0;i<=n;i++) prd[i]=prd_sq[i]=1;
for(int i=1;i<=n;i++) for(int j=i;j<=n;j+=i) prd[j]=mol1(1ll*prd[j]*work(i,mu[j/i]));
for(int i=1;i<=n;i++) prd[i]=mol1(1ll*prd[i-1]*prd[i]);
for(int i=0;i<=n;i++) prd_inv[i]=qpow(prd[i],-1);
for(int i=1;i<=n;i++) for(int j=i;j<=n;j+=i)
prd_sq[j]=mol1(1ll*prd_sq[j]*
qpow(qpow(i,mol2(1ll*i*i)),mol2(1ll*mu[j/i]*(j/i)*(j/i))));
for(int i=1;i<=n;i++) prd_sq[i]=mol1(1ll*prd_sq[i-1]*prd_sq[i]);
for(int i=0;i<=n;i++) prd_sq_inv[i]=qpow(prd_sq[i],-1);
pre_ii[0]=1;for(int i=1;i<=n;i++) pre_ii[i]=mol1(1ll*pre_ii[i-1]*qpow(i,i));
for(int i=0;i<=n;i++) inv_pre_ii[i]=qpow(pre_ii[i],-1);
pre_mul[0]=1;for(int i=1;i<=n;i++) pre_mul[i]=mol1(1ll*pre_mul[i-1]*work(i,mu[i]));
for(int i=0;i<=n;i++) inv_pre_mul[i]=qpow(pre_mul[i],-1);
prd_phi[0]=1;for(int i=1;i<=n;i++) prd_phi[i]=mol1(1ll*prd_phi[i-1]*qpow(i,phi[i]));
for(int i=0;i<=n;i++) prd_phi_inv[i]=qpow(prd_phi[i],-1);
for(int i=1;i<=n;i++) sphi[i]=mol2(sphi[i-1]+phi[i]);
}
int calc1(int x,int y){
int res=1;
for(int l=1,r;l<=min(x,y);l=r+1){
r=min(x/(x/l),y/(y/l));
res=1ll*res*qpow(1ll*prd[r]*prd_inv[l-1]%mod,1ll*(x/l)*(y/l)%(mod-1))%mod;
}
return res;
}
int solve1(int a,int b,int c){
int res=1ll*qpow(calc1(a,b),-c)*qpow(calc1(a,c),-b)%mod;
res=1ll*res*qpow(fac[a],1ll*b*c%(mod-1))%mod;
res=1ll*res*qpow(fac[b],1ll*a*c%(mod-1))%mod;
return res;
}
ll get(int x){return mol2(1ll*x*(x+1)/2);}
int calc2(int x,int y){
int res=1;
for(int l=1,r;l<=min(x,y);l=r+1){
r=min(x/(x/l),y/(y/l));
res=1ll*res*qpow(1ll*prd_sq[r]*prd_sq_inv[l-1]%mod,
1ll*get(x/l)*get(y/l)%(mod-1))%mod;
}
return res;
}
int solve2(int a,int b,int c){
int res=1;
res=1ll*res*qpow(pre_ii[a],(1ll*b*(b+1)>>1)%(mod-1))%mod;
res=1ll*res*qpow(pre_ii[b],(1ll*a*(a+1)>>1)%(mod-1))%mod;
res=1ll*res*qpow(calc2(a,b),mod-2)%mod;
res=qpow(res,(1ll*c*(c+1)>>1)%(mod-1));
res=1ll*res*qpow(calc2(a,c),-(1ll*b*(b+1)>>1)%(mod-1))%mod;
return res;
}
int calc3(int x,int y,int z){
int res=1;
for(int l=1,r;l<=x;l=r+1){
r=1e9;
if(x/l) chkmin(r,x/(x/l));
if(y/l) chkmin(r,y/(y/l));
if(z/l) chkmin(r,z/(z/l));
int mul=qpow(1ll*prd_phi[r]*prd_phi_inv[l-1]%mod,x/l);
mul=1ll*mul*qpow(fac[x/l],sphi[r]-sphi[l-1])%mod;
res=1ll*res*qpow(mul,1ll*(y/l)*(z/l)%(mod-1))%mod;
} return res;
}
int calc4(int x,int y,int z){
int res=1;
for(int l=1,r;l<=min(x,y);l=r+1){
r=1e9;
if(x/l) chkmin(r,x/(x/l));
if(y/l) chkmin(r,y/(y/l));
if(z/l) chkmin(r,z/(z/l));
res=1ll*res*qpow(1ll*prd_phi[r]*prd_phi_inv[l-1]%mod,1ll*(x/l)*(y/l)*(z/l)%(mod-1))%mod;
int X=x/l,Y=y/l,Z=z/l,sm=1ll*Z*(sphi[r]-sphi[l-1])%(mod-1);
for(int L=1,R;L<=min(X,Y);L=R+1){
R=1e9;
if(X/L) chkmin(R,X/(X/L));
if(Y/L) chkmin(R,Y/(Y/L));
res=1ll*res*qpow(1ll*prd[R]*prd_inv[L-1]%mod,1ll*(X/L)*(Y/L)*sm%(mod-1))%mod;
}
}
return res;
}
int solve3(int x,int y,int z){
return 1ll*calc3(x,y,z)*calc3(y,x,z)%mod*
qpow(calc4(x,y,z),-1)%mod*qpow(calc4(x,z,y),-1)%mod;
}
int main(){
int qu;scanf("%d%lld",&qu,&mod);
_base1=(_base1<<64)/mod;_base2=(_base2<<64)/(mod-1);
sieve(MAXV);
while(qu--){
int a,b,c;scanf("%d%d%d",&a,&b,&c);
printf("%d %d %d\n",solve1(a,b,c),solve2(a,b,c),solve3(a,b,c));
}
return 0;
}

洛谷 P5518 - [MtOI2019]幽灵乐团 / 莫比乌斯反演基础练习题(莫比乌斯反演+整除分块)的更多相关文章

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

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

  2. [SDOI2017]数字表格 & [MtOI2019]幽灵乐团

    P3704 [SDOI2017]数字表格 首先根据题意写出答案的表达式 \[\large\prod_{i=1}^n\prod_{j=1}^mf_{\gcd(i,j)} \] 按常规套路改为枚举 \(d ...

  3. 题解-MtOI2019 幽灵乐团

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

  4. 【洛谷2257/BZOJ2820】YY的GCD(数论/莫比乌斯函数)

    题目: 洛谷2257 预备知识:莫比乌斯定理(懵逼乌斯定理) \(\mu*1=\epsilon\)(证bu明hui略zheng) 其中(我校学长把\(\epsilon(x)\)叫单位函数但是为什么我没 ...

  5. 洛谷P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)

    题目背景 提示:原 P1829 半数集问题 已经迁移至 P1028 数的计算 题目描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple).对于两个正整数a ...

  6. 洛谷 P6222 - 「P6156 简单题」加强版(莫比乌斯反演)

    原版传送门 & 加强版传送门 题意: \(T\) 组数据,求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^n(i+j)^k\mu^2(\gcd(i,j))\g ...

  7. 洛谷 P6478 - [NOI Online #2 提高组] 游戏(二项式反演+树形 dp)

    题面传送门 没错这就是我 boom0 的那场 NOIOL 的 T3 一年前,我在 NOIOL #2 的赛场上折戟沉沙,一年后,我从倒下的地方爬起. 我成功了,我不再是从前那个我了 我们首先假设 A 拥 ...

  8. [MtOI2019]幽灵乐团

    题目 一个很暴力的辣鸡做法 考虑到两个数的\(\gcd\)是所有质数次幂取\(\min\),两个数的\(\rm lcm\)是所有质数次幂取\(\max\),于是最后的答案一定是\(\prod p_i^ ...

  9. 【洛谷】P1754 球迷购票问题(基础dp)

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

随机推荐

  1. RabbitMQ延时队列应用场景

    应用场景 我们系统未付款的订单,超过一定时间后,需要系统自动取消订单并释放占有物品 常用的方案 就是利用Spring schedule定时任务,轮询检查数据库 但是会消耗系统内存,增加了数据库的压力. ...

  2. 整理一下在 npmjs.com 上面发布资源包踩过的坑

    正常流程就不说了,网上有很多,比如写代码.打包.注册.登录.发布等. 邮箱要激活 在 npmjs.com 上面注册账号的时候需要填写邮箱,然后登录网址的时候并没有强制要求你去邮箱激活. 但是到了发布资 ...

  3. 如何配置log4Net

    之前曾经用过几次,但是每次都是用完就忘了,下次再用的时候要baidu半天,这次弄通之后直接记下来. 步骤如下. 1. 安装log4Net,直接用NuGet, Install-Package log4N ...

  4. Scrum Meeting 0529

    零.说明 日期:2021-5-29 任务:简要汇报七日内已完成任务,计划后两日完成任务 一.进度情况 组员 负责 七日内已完成的任务 后两日计划完成的任务 困难 qsy PM&前端 完成后端管 ...

  5. 2020BUAA软工热身作业

    2020BUAA软工热身作业 17373010 杜博玮 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 热身作业 我在这个课程的目标是 学习软件工 ...

  6. seata整合多数据源

    seata整合多数据源 一.背景 二.整合步骤 1.seata server的搭建 2.引入数据源切换组件 3.引入seata组件 4.配置多数据源 5.关闭seata自己默认的数据源代理 6.配置s ...

  7. Python大数据应用

    一.三国演义人物出场统计 先检查安装包 1.jieba库基本介绍 (1)jieba库概述 jieba是优秀的中文分词第三方库 中文文本需要通过分词获得单个的词语 jieba是优秀的中文分词第三方库,需 ...

  8. shell调用另一个脚本的三种方式fork/exec/source

    exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两 ...

  9. 51nod_1001 数组中和等于K的数对(二分)

    题意: 给出一个整数K和一个无序数组A,A的元素为N个互不相同的整数,找出数组A中所有和等于K的数对.例如K = 8,数组A:{-1,6,5,3,4,2,9,0,8},所有和等于8的数对包括(-1,9 ...

  10. Electron结合React,在渲染进程中使用 node 模块

    Electron结合React,在渲染进程中使用 node 模块 问题 将create-react-app与electron集成在了一个项目中.但是在React中无法使用electron.当在Reac ...