栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

组合数c++

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

组合数c++

题目描述

给定n,k,请你计算组合数C(n,k)。

输入格式

2个整数n,k(0<=k<=n<=50)。空格隔开。

输出格式

1个整数,代表C(n,k)的值

样例输入
4 2
样例输出
6
问题提示

0<=k<=n<=50

结果可能很大

样例理解

1 0 0 0 0

1 1 0 0 0 

1 2 1 0 0

1 3 3 1 0 

1 4 6 0 1

杨辉三角(杨辉:你礼貌吗)

所以公式为:C(i,j)=C(i-1,j)+C(i-1,j-1) 

直接二维数组

 

#include
using namespace std;
long long a[1000][1000],n,m;
int main()
{
	cin>>n>>m;
	for(int i=0;i<=n;i++)
	{
		a[i][0]=1;
		a[i][i]=1;
	}
	//赋值,毕竟是动规 
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i 

F2 

通项公式:n-m+1/1+n-m+2/2+n-m+3/3+……+n/m

所以直接for里套(ans*=(n-m+i)/i)

#include
using namespace std;
long long n,m;
int main()
{
	cin>>n>>m;
	long long ans=1;
	for(int i=1;i<=m;i++)
	{
		ans=ans*(n-m+i)/i;//注意n-m+1可能不是i的倍数,但ans一定是i的倍数,但*=算的是后面一段,所以要改成ans=ans*…… 
	 } 
	 cout<

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026937.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号