注意到前3个操作都不会影响每列的情况,而第4个操作必然会将行列交换,故只要每行的和相同即可满足条件. 考虑数位DP,设$f[i][j][k][t]$表示考虑最高的$i$位,第一行的和是$j$,当前行的和是$k$,与$R$的大小关系为$t$的数字个数. 需要特判$|R|=1$以及$|R|$不是完全平方数的情况. #include<cstdio> int n,m,s,a[20],i,j,k,x,t,nx;long long R,f[20][40][40][2],ans; int main(){ s…