Matrices with XOR property (暴力)

题意:给出一个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\n",ans);
    }
    return 0;
}

 

posted @ 2019-07-23 12:37  Tianwell  阅读(123)  评论(0编辑  收藏  举报