AC

Lee  •  1天前


include

define int long long

using namespace std; const int mod = 1e9 + 7; int jx[1000001]; int ni[1000001]; int f[1000001];

int qw(int a, int b) {

int ans = 1;

while (b) {
	if (b & 1) {
		ans *= a;
		ans %= mod;
	}

	a = a * a;
	a %= mod;
	b /= 2;
}

return ans;

}

signed main() {

int t;
scanf("%lld", &t);
jx[0] = jx[1] = 1;

for (int i = 2; i <= 1e6; i++) {

	jx[i] = jx[i - 1] * i;
	jx[i] %= mod;
}

ni[1000000] = qw(jx[1000000], mod - 2);

for (int i = 1e6 - 1; i >= 0; i--) {

	ni[i] = ni[i + 1] * (i + 1);
	ni[i] %= mod;
}

f[2] = f[0] = 1;

for (int i = 3; i <= 1e6; i++) {

	f[i] = (i - 1) * (f[i - 2] + f[i - 1]);
	f[i] %= mod;
}

while (t--) {
	int n, m;
	scanf("%lld%lld", &n, &m);
	int ans = jx[n] * ni[m];
	ans %= mod;
	ans *= ni[n - m];
	ans %= mod;
	n -= m;
	ans *= f[n];
	ans %= mod;
	printf("%lld\n", ans);
}

return 0;

}


评论:

请先登录,才能进行评论