#include <cstdio> unsigned int dp[1000][1001]; void initDP(int n, int k) { for (size_t i = 0; i <= n; i++) { dp[0][i] = 1; } for (size_t i = 1; i <= k; i++) { dp[i][1] = 0; } } int countPermutation(int n, int k) { initDP(n, k); for (size_t row = 1; row <= k; row++) { for (size_t col = row + 1; col <= n; col++) { dp[row][col] = 0; dp[row][col] += dp[row][col - 1] * (row + 1); dp[row][col] += dp[row - 1][col - 1] * (col - row); dp[row][col] %= 2017; } } return dp[k][n]; } int main() { int n, k; scanf("%d%d", &n, &k); printf("%d", countPermutation(n, k)); return 0; }
点赞 评论

相关推荐

点赞 评论 收藏
转发
牛客网
牛客企业服务