[编程题]玫瑰花
时间限制:1秒
空间限制:65536K
有K种不同的玫瑰花,现在要摆放在N个位置上,要求每种颜色的花至少出现过一次,请问有多少种不同的方案数呢?,因为答案可能很大,你只需要输出它对772235取余后的结果.
输入描述:
输入只有1行,分别有两个整数N,K( 1 <= N <= 50000 , 1 <= K <= 30 )
输出描述:
输出一行表示答案
输入例子1:
3 2
输出例子1:
6
典型的递推问题,只要找到递推公式很容易就能做出来
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int k = sc.nextInt();
int[][] mem = new int[k + 1][N + 1];
mem[0][0] = 1;
for(int i = 1; i <= N; ++i){
for(int j = 1; j <= k; ++j){
mem[j][i] = (mem[j - 1][i - 1] % 772235 + mem[j][i - 1] % 772235) * j;
}
}
System.out.println(mem[k][N] % 772235);
}
}