FZU - 2282 Wand——错排公式+组合数
#include #include #include #include using namespace std;const int maxn = 1e4 + 10;const int mod = 1e9 + 7;long long dp[maxn], c[maxn][110], n1[maxn];int T, n, k;int main() { dp[0] = 1, dp[1] = 0, dp[2] = 1; for (int i = 3; i <= 10000; i++) dp[i] = (dp[i-1]+dp[i-2])*(i-1)%mod; c[1][0] = c[1][1] = 1; for (int i = 2; i <= 10000; i++) { c[i][0] = 1; for (int j = 1; j <= 100; j++) { c[i][j] = (c[i-1][j]+c[i-1][j-1])%mod; } } n1[1] = 1; for (int i = 2; i <= 10000; i++) n1[i] = n1[i-1]*i%mod; scanf("%d", &T); while (T--) { scanf("%d %d", &n, &k); long long ans = 0; for (int i = 0; i < k; i++) ans = (ans + c[n][i]*dp[n-i]%mod)%mod; printf("%lld\n", (n1[n]-ans+mod)%mod); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~