题目描述
现在有n个小球分给三个学长,每个小球都是一样的,学长至少会拿一个小球,现在学长告诉你有多少种分配方法。
我们可以用隔板法来思考:将10个球排成一排,球与球之间形成9个空隙,将两个隔板插入这些空隙中(每空至多插一块隔板),隔板会将球分为3个部分。分配方案会是C(n-1,m-1)=C(9,2)=36(个)。
但是学长觉得这个问题太简单了,他想问你学长可以不拿球的分配方案。
保证n个球一定被分完
输入
输入一个整数n (3 <= n <= 1e4)
输出
输出一个整数表示方案的个数
样例输入
3
样例输出
10
- 这个题目没有那么复杂,我找到了规律。
- 题目已经说了隔板法,这难道不是在暗示我们用隔板法嘛!
- 因为学长能不拿球嘛,那我们在它原有给的球里面加俩个球,给这学长,分配完之后,拿回来。那么就有学长不拿球了。(就是把学长拿一个球的情况看成不拿球的情况)
这是组合的公式。然后我们可以简化成
.
- 然后要多加俩个球就是把你n+2带入n中.
代码如下:
#include<stdio.h>
unsigned long long slove(int n)
{
return n*(n-1)/2;
}
int main()
{
int n;
unsigned long long s=0;
scanf("%d",&n);
s=slove(n+2);
printf("%llu\n",s);
}