问题 D: Divide the pears
时间限制: 1 Sec 内存限制: 128 MB提交: 11 解决: 11
题目描述
Macro非常喜欢吃梨,有一天他得到了ACMICPC组委会送给他的一筐梨子。他比较心疼学生,就打算把梨子分给学生吃。现在他要把M个梨子放到N个盘子里面 (我们允许有的盘子为空) ,你能告诉Macro有多少种分法吗?
(请注意,如果有三个盘子,我们将5,1,1和1,1,5,视为同一种分法)
输入
第一行是一个整数t,代表有t组样例。
第二行有两个整数M 和 N 代表有M个梨和N个盘子。
输出
输出有多少种方法
样例输入
1
7 3
样例输出
8
f(m,n)表示将m个梨放到n个盘子里的方法数=f(m,n-1)+f(m-n,n):第一个盘子为空的情况加上第一个盘子不为空的情况(每个盘子先分一个,保证不为空)
coed:
#include<cstdio> int f(int m,int n){ if(m==0||n==1) return 1; else if(m<0) return 0; else return f(m,n-1)+f(m-n,n); } int main(){ int n,m; int t; scanf("%d",&t); while(t--){ scanf("%d%d",&m,&n); printf("%d\n",f(m,n)); } return 0; }