第二类斯特林数 n 匹马 分成1 2 3... n组 每一组就是相同排名 没有先后 然后组与组之间是有顺序的 在乘以组数的阶乘
#include <cstdio> #include <cstring> using namespace std; int dp[1010][1010]; int a[1010]; int main() { a[0] = 1; dp[0][0] = 1; for(int i = 1; i <= 1000; i++) { dp[i][0] = 0; dp[i][i] = 1; for(int j = 1; j < i; j++) { dp[i][j] = j * dp[i-1][j] + dp[i-1][j-1]; dp[i][j] %= 10056; } a[i] = a[i-1] * i; a[i] %= 10056; } int T; int cas = 1; scanf("%d", &T); while(T--) { int n; scanf("%d", &n); int ans = 0; for(int i = 1; i <= n; i++) { ans += dp[n][i] * a[i]; ans %= 10056; } printf("Case %d: %d\n", cas++, ans); } return 0; }
时间: 2024-10-17 17:13:29