NKOI 3526 放苹果(强数据版)

放苹果

Time Limit:10000MS  Memory Limit:65536K Total Submit:25 Accepted:12 Case Time Limit:1000MS

Description

一天,Formiko由于成绩优秀,得到了何老板赏赐的m个完全相同的苹果。他觉得何老板赏赐的东西十分有纪念价值,就准备把这些苹果放到n个完全相同的盘子里保存起来。但这时患有重度强迫症的Formiko想知道将m个苹果放入n个盘子共有多少种放的方案,否则他就不能放入了(悲剧啊!)。但是苹果和盘子也许有很多,显然方案就会有很多,Formiko不能把所有的方案数全部数清楚,所以这个艰巨而又坑壁的任务就交给你了。(答案对1000007取模) 但Formiko还是没有如此作死地把任务全部交给你,他给了你两点十分重要的提示提示:1、允许有的盘子空着不放;2、例如5,1,1和1,1,5是同一种放法。

Input

一行,两个整数m,n,分别表示m个苹果和n个盘子。

Output

一行,一个整数ans,表述方案总数。

Sample Input

7 3

Sample Output

8

Hint

1<=m,n<=2000


#include<cstdio>
#define mod 1000007
using namespace std;
int n,m;
int f[2002][2002];
int main(){
	scanf("%d%d",&m,&n);
	int i,j;
	for(i=1;i<=n;i++)f[0][i]=1;
	for(i=1;i<=m;i++)f[i][1]=1;
	for(i=1;i<=m;i++)
	    for(j=1;j<=n;j++){
	    	f[i][j]=f[i][j-1];
	    	if(i>=j)f[i][j]+=f[i-j][j];//递推
	    	f[i][j]%=mod;
	    }  
	printf("%d",f[m][n]);
}

你可能感兴趣的:(NKOI 3526 放苹果(强数据版))