2 条题解
-
0
G45 第一类斯特林数 斯特林轮换数
G45 第一类斯特林数 斯特林轮换数(内网)#include <bits/stdc++.h> using namespace std; const int N = 50010, M = 210, P = 1e9 + 7; long long S[N][M], C[M][M]; void init() { S[0][0] = 1; for (int i = 1; i < N; i++) for (int j = 1; j < M; j++) S[i][j] = (S[i-1][j-1] + (i-1) * S[i-1][j]) % P; for (int i = 0; i < M; i++) C[i][0] = 1; for (int i = 1; i < M; i++) for (int j = 1; j <= i; j++) C[i][j] = (C[i-1][j-1] + C[i-1][j]) % P; } int main() { init(); int T, n, a, b, ans; scanf("%d", &T); while (T--) { scanf("%d%d%d", &n, &a, &b); ans = S[n-1][a + b - 2] * C[a + b - 2][a - 1] % P; printf("%d\n", ans); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; const int N=50010, M=210, P=1e9+7; long long S[N][M], C[M][M]; void init() { S[0][0]=1; for(int i=1; i<N; i++) for(int j=1; j<M; j++) S[i][j]=(S[i-1][j-1]+(i-1)*S[i-1][j])%P; for(int i=0; i<M; i++) C[i][0]=1; for(int i=1; i<M; i++) for(int j=1; j<=i; j++) C[i][j]=(C[i-1][j-1]+C[i-1][j])%P; } int main() { init(); int T, n, a, b, ans; scanf("%d", &T); while(T--) { scanf("%d%d%d", &n, &a, &b); ans=S[n-1][a+b-2]*C[a+b-2][a-1]%P; printf("%d\n", ans); } return 0; }
- 1
信息
- ID
- 447
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 84
- 已通过
- 21
- 上传者