暑假多校联盟(=) e题 书架

问题 E: YK的书架

时间限制: 1 秒   内存限制: 128 MB
提交: 596   解决: 138
提交  状态 
题目描述
    YK新买了2n+1 本相同的书,准备放在家里的3 层书架上(每一层放书的数量>=0且<=n)。不过YK摆放他的书有些特殊的要求,即任意两层摆放的书的数目之和,严格大于另一层的书的数目。现在YK想知道在满足他的要求的前提下有多少种不同的摆书方法。
输入
输入有多行,每行一个整数n(1<=n<1e9) ,其含义如题目描述中所述
输出
对于每行输入,输出一行答案。
样例输入
1
2
样例输出
1
3
提示

题解:
由题意可知,每层放的书的个数不能超过n个,否则无法满足题中的要求。我们假设一开始有3n本书,每层各n本。那么答案恰好为从这3n本书中拿走n-1本书的方案数,即


x_1+x_2+x_3=n-1   x_1,x_2,x_3 >= 0


的方案数,即求组合数C(n+1,2)

想了半天       借鉴一下这个例子


例四、将r个相同的小球放入n个不同的盒子,总共有多少种方案?

解答:该问题可以转化为r个相同的小球与n-1个相同的盒壁的排列问题

仔细理解     盒子可以为空     隔板放置的位置   可以是 末端  所以  是从  n-1 +2 中 选出 两个 隔板  所以 c (n+1,2)



#include<iostream>
#include<queue>
#include<cmath>
#include<cstring>
#include<cstdlib>

using namespace std;

long long fun(long long x)
{
	long long res=1;
	return x*(x+1)/2;
}

int main()
{

	int n,t,m;	

	while(~scanf("%d",&t))
	{ 
		printf("%lld\n",fun(t));
	}

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值