SPOJ - VECTAR1Matrices with XOR property (组合数)@

    xiaoxiao2021-03-25  141

    D - Matrices with XOR property

      SPOJ - VECTAR1  FAQ | About | Google Group | Discuss | Author 

    题意:一个矩阵,每一个元素在 n*m 的范围内,且均不相同,满足格子的坐标 x1 , y1, x2, y2   当(x1^y1)>(x2^y2)时,第一个格子的元素值大于第二个元素值;

    求满足条件的矩阵;

    解:因为异或值小的格子元素一定比异或值大的格子元素小,且所有元素不相同;直接计算所有异或值不相同的值得个数求全排列;1->1000内的所有值异或最大仅为1023;

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> using namespace std; const int N = 1e6+10; typedef long long LL; const LL mod = 1e9+7; LL a[N]; int vis[1030]; int main() { a[0]=1; for(int i=1;i<=1000000;i++) a[i]=a[i-1]*i%mod; int t, n, m; scanf("%d", &t); while(t--) { scanf("%d %d", &n, &m); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { vis[i^j]++; } } LL ans=1; for(int i=0;i<=1024;i++) { ans=ans*a[vis[i]]%mod; } printf("%lld\n",ans%mod); } return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-7358.html

    最新回复(0)