链接:https://ac.nowcoder.com/acm/contest/10323/B 来源:牛客网
自助餐厅里有5个盘子,里面装的都是面包。 第1个盘子里有无限个面包; 第2个盘子里只有1个面包; 第3个盘子里只有4个面包; 第4个盘子里也有无限个面包,但必须两个两个地拿; 第5个盘子里也有无限个面包,但必须5个5个地拿; 给定正整数n,求有多少种正好拿出n个面包的方案。
方案a和方案b不同,当且仅当方案a存在从某个盘子里拿出面包的数量与方案b中对应盘子拿出的数量不同。
示例1
输入
1
返回值
3
说明
有3种方案:
在第一个盘子拿一个。
在第二个盘子拿一个。
在第三个盘子拿一个。
示例2
输入
2
返回值
6
说明
有6种方案:
在第一个盘子拿2个。
在第一个盘子拿1个,第二个盘子拿1个。
在第一个盘子拿1个,第三个盘子拿1个。
在第二个盘子拿1个,第三个盘子拿1个。
在第三个盘子拿2个。
在第四个盘子拿2个。
(请注意由于第四个盘子里只能两个两个拿,所以必须拿偶数个)
备注:
n<=10^9
数据仅包含一个正整数n
输出一个正整数表示答案。
总方案数为 1 + 2 + . . . + ( n + 1 ) = ( n + 2 ) ∗ ( n + 1 ) / 2 = C n + 2 2 1+2+...+(n+1) = (n+2)*(n+1)/2=C_{n+2}^2 1+2+...+(n+1)=(n+2)∗(n+1)/2=Cn+22
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param n int整型
* @return long长整型
*/
long long wwork(int n) {
// write code here
return 1LL*(n+2)*(n+1)/2;
}
};