题意:给出一个n x m的矩阵然后矩阵下标(i,j)异或值越大的其单元的值越大, 所有存储的值范围为(1~n m)不重复,问某个矩阵有多少组合形式
思路:如果不考虑其他的方法,单从最简单的方向来看就是打表
完整代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int MOD=1e9+7; const int maxn=1e3+5; int n,m,mat[maxn][maxn],cnt[maxn*3]; void init() { memset(cnt,0,sizeof(cnt)); for(int i=1; i<maxn; i++) for(int j=1; j<maxn; j++) mat[i][j]=i^j; } int main() { int t; scanf("%d",&t); init(); while(t--) { scanf("%d%d",&n,&m); memset(cnt,0,sizeof(cnt)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cnt[mat[i][j]]++; ll ans=1; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { ans=ans*cnt[mat[i][j]]%MOD; cnt[mat[i][j]]--; } printf("%I64d ",ans); } return 0; }