NYOJ 459(可重复组合数)

简介: //全部用long #include long fun(int n,int m) { long long int a,b,ans=1; a=n-m+1; b=1; while(a
 //全部用long      
#include<stdio.h>
long fun(int n,int m)
{
	long long int a,b,ans=1;
	a=n-m+1;
	b=1;
	while(a<=n&&b<=m)
	{
		ans=ans*a/b;
		a++;
		b++;
	}
	return ans;
}
int main()
{
	long long int m,n,ans;
	while(scanf("%lld%lld",&n,&m),m||n)
	{
		ans=fun(n+m-1,m);	
		printf("%lld\n",ans);
	}
	return 0;
}

//输入1 0,应输出0,而实际输出1,但一看题,说正整数

 这个问题叫做:可重复组合数,与求方程x1+x2+x3+…+xm=n的非负整数解的组数是一类问题,方法有多种,结论有两种一种是递推的,一种是组合数,我只说下组合数的结论吧:C(n+m-1,m) 

目录
相关文章
|
7月前
|
Kubernetes 算法 测试技术
【贪心】【回溯】【字符串】2014. 重复 K 次的最长子序列
【贪心】【回溯】【字符串】2014. 重复 K 次的最长子序列
|
7月前
|
人工智能 算法 测试技术
【动态规划】【二分查找】C++算法 466 统计重复个数
【动态规划】【二分查找】C++算法 466 统计重复个数
|
2月前
|
7月前
|
算法 测试技术 C#
【对顶队列】【中位数贪心】【前缀和】3086. 拾起 K 个 1 需要的最少行动次数
【对顶队列】【中位数贪心】【前缀和】3086. 拾起 K 个 1 需要的最少行动次数
|
7月前
|
存储 算法 程序员
【算法训练-数组 一】【数组子集】:最长无重复子数组
【算法训练-数组 一】【数组子集】:最长无重复子数组
48 0
|
算法
【12. 最大连续不重复子序列】
. 最大连续不重复子序列
118 0
【12. 最大连续不重复子序列】
|
算法 API
算法002:最长无重复子数组
算法002:最长无重复子数组
算法002:最长无重复子数组
寻找旋转排序数组中的最小值 (重复与非重复代码)
寻找旋转排序数组中的最小值 (重复与非重复代码)
113 0
寻找旋转排序数组中的最小值 (重复与非重复代码)
【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
【组合数学】生成函数 ( 正整数拆分 | 无序不重复拆分示例 )
328 0