NC229299. Subpermutation
描述
输入描述
第一行包含一个整数,表示数据组数。
接下来行,每行包含两个整数 和,如描述中所述。
输出描述
对于每组数据,输出。
示例1
输入:
4 2 1 2 2 3 2 4 3
输出:
2 2 4 15
说明:
对于第三组数据,, 。 中有个连续子序列等于或:C++(clang++ 11.0.1) 解法, 执行用时: 244ms, 内存消耗: 16992K, 提交时间: 2022-08-07 12:45:33
#include<bits/stdc++.h> using namespace std; #define int long long const int mod = 1e9+7,N = 1e6+6; int f[N],g[N]; void init(){ f[1] = g[1] = g[0] = f[0] = 1; for(int i = 2; i < N; i++){ f[i] = f[i-1]*i%mod; g[i] = (g[i-1]+1)*i%mod; } } signed main(){ int t; cin >> t; init(); while(t--){ int n,m; cin >> n >> m; int ans = ((n*f[m]%mod)*f[n-m]%mod-g[m]+f[m]+mod)%mod; cout << ans << '\n'; } }