大体题意:
问你有多少个矩阵满足(i1,j1) and (i2,j2), if (i1^j1) > (i2^j2) then A[i1][j1] > A[i2][j2]
对1e9+7取模
思路:
当i1^j1 == i2^j2 的时候不能比较大小, 全排列就好了。
因此问题转换为有多少个i1^j1 == i2^j2 的位置,全排列乘起来就好了
#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #define Siz(x) (int)x.size() using namespace std; typedef long long LL; const int mod = 1e9+7; int n,m,T; int vis[2048]; LL JIE[2048]; void init(){ JIE[0] = 1; for (int i = 1; i < 2048 ;++i){ JIE[i] = (JIE[i-1] * i) % mod; } } int main(){ scanf("%d",&T); init(); 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 = 1LL; for (int i = 0; i < 2048; ++i){ if (vis[i]) ans = (ans*JIE[vis[i]]) % mod; } printf("%lld\n",ans); } return 0; }Imagine A is a NxM matrix with two basic properties 1) Each element in the matrix is distinct and lies in the range of 1<=A[i][j]<=(N*M) 2) For any two cells of the matrix, (i1,j1) and (i2,j2), if (i1^j1) > (i2^j2) then A[i1][j1] > A[i2][j2] ,where 1 ≤ i1,i2 ≤ N 1 ≤ j1,j2 ≤ M. Given N and M , you have to calculatethe total number of matrices of size N x M which have both the properties mentioned above. Input format: First line contains T, the number of test cases. 2*T lines follow with N on the first line and M on the second, representing the number of rows and columns respectively. Output format: Output the total number of such matrices of size N x M. Since, this answer can be large, output it modulo 10^9+7 Constraints: 1 ≤ N,M,T ≤ 1000 SAMPLE INPUT 1 2 2 SAMPLE OUTPUT 4 Explanation The four possible matrices are: [1 3] | [2 3] | [1 4] | [2 4] [4 2] | [4 1] | [3 2] | [3 1]
Imagine A is a NxM matrix with two basic properties
1) Each element in the matrix is distinct and lies in the range of 1<=A[i][j]<=(N*M)
2) For any two cells of the matrix, (i1,j1) and (i2,j2), if (i1^j1) > (i2^j2) then A[i1][j1] > A[i2][j2] ,where
1 ≤ i1,i2 ≤ N
1 ≤ j1,j2 ≤ M.
^ is Bitwise XOR
Given N and M , you have to calculatethe total number of matrices of size N x M which have both the properties
mentioned above.
Input format:
First line contains T, the number of test cases. 2*T lines follow with N on the first line and M on the second, representing the number of rows and columns respectively.
Output format:
Output the total number of such matrices of size N x M. Since, this answer can be large, output it modulo 10^9+7
Constraints:
1 ≤ N,M,T ≤ 1000
SAMPLE INPUT
1
2
2
SAMPLE OUTPUT
4
Explanation
The four possible matrices are:
[1 3] | [2 3] | [1 4] | [2 4]
[4 2] | [4 1] | [3 2] | [3 1]
Submit solution!