显示原始代码
#include <bits/stdc++.h>
#define PI 3.141592653589793238462
#define eps 1e-20
#define fi first
#define se second
using namespace std;
using cd = complex<double>;
typedef long long ll;
typedef long double db;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<db, db> pdd;
ll d[1005][1005][2], mod = 1e9 + 7;
int main() {
d[1][0][0] = 1;
for (ll i = 1; i <= 1000; i++) {
for (ll j = 0; j <= i; j++) {
d[i + 1][j + 1][1] += d[i][j][0] * 2;
d[i + 1][j - 1][0] += d[i][j][0] * j;
d[i + 1][j][0] += d[i][j][0] * (i - j - 1);
d[i + 1][j + 1][1] += d[i][j][1];
d[i + 1][j - 1][0] += d[i][j][1] * (j - 1);
d[i + 1][j][0] += d[i][j][1] * (i - j);
d[i + 1][j][1] += d[i][j][1];
d[i + 1][j][0] %= mod;
d[i + 1][j][1] %= mod;
d[i + 1][j - 1][0] %= mod;
d[i + 1][j - 1][1] %= mod;
d[i + 1][j + 1][0] %= mod;
d[i + 1][j + 1][1] %= mod;
}
}
ll q;
cin >> q;
while (q--) {
ll n, k;
cin >> n >> k;
cout << (d[n][k][0] + d[n][k][1]) % mod << endl;
}
}