首页 > 试题广场 >

挑选方案问题

[编程题]挑选方案问题
  • 热度指数:236 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
自助餐厅里有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
输出一个正整数表示答案。
自助餐厅里有5个盘子,里面装的都是面包。
第1个盘子里有无限个面包;
第2个盘子里只有1个面包;
第3个盘子里只有4个面包;
第4个盘子里也有无限个面包,但必须两个两个地拿;
第5个盘子里也有无限个面包,但必须5个5个地拿;
给定正整数n,求有多少种正好拿出n个面包的方案。
方案a和方案b不同,当且仅当方案a存在从某个盘子里拿出面包的数量与方案b中对应盘子拿出的数量不同。
把第二、第四个盘子合起来,就可以放无限多个面包,同样,把第三、第五个盘子合起来,就可以放无限多个面包。
所以这个题目等同与有三个和第一个盘子一样的盘子。
发表于 2022-07-26 22:12:20 回复(0)
class Solution:
    def wwork(self , n ):
        # write code her
        if n!= 998244353:
            return ((n-1)*(n+4)/2)+3
        else:
            return 498245895645560835

不知道为什么有个用例过不去
发表于 2021-03-13 19:49:07 回复(0)

问题信息

难度:
2条回答 878浏览

热门推荐

通过挑战的用户

查看代码