zhangjinxuan 发表于 2023-2-11 08:58:20

【C++板块提升计划】梦想护卫舰 第22关 组合数计算

本帖最后由 zhangjinxuan 于 2023-2-12 13:39 编辑


上一关:解决题目


梦想护卫舰 第22关 组合数计算

外星人终于被你们的聪明才智打败了,于是把 zhangjinxuan 放了出来

你们非常高兴,准备带上之前获得的十万鱼币宝箱继续起航

可是……

船被破坏了,被破坏成成了 m 个零件……

但你们数了数,发现这里一共有 n 个零件,所以你们想知道,你们要最多尝试多少次,才能拼成整个船呢(不考虑零件的先后顺序,且零件互不相同)?

因为答案可能很大,所以请你对 1e9 + 7 取余

换句话说,请求出 C(n,m) % (1e9 + 7) = ?

提示:C(n,m) = C(n, m) = n! / (n - m)! / m!,在这里,n! 为 n 的阶乘

另外,我们还规定,当 n > m, C(n, m) = 0

输入格式
一行两个数字,分别表示 n, m

输出格式
一行一个数字,表示 C(n,m) % (1e9 + 7) 的值

输入样例1
4 2

输出样例1
6

输入样例2
99999 47297

输出样例2
286996488

数据范围
对于所有数据,保证1 <= n, m <= 1e6

小彩蛋
**** Hidden Message *****
static/image/hrline/1.gif

答案与解析
**** Hidden Message *****

最佳战士排行榜

|第一名|第二名|第三名
名字|||
链接|||
语言|||
效率|||
代码得分|||
综合得分|||
奖励|5鱼币5荣誉+“最佳答案”|3鱼币3荣誉+"|2鱼币2荣誉

/*综合评分会参照运行时间(代码效率),代码长度,代码可读性,解题思路,代码得分等来进行评分*/

我们一起来 Hack
从本关起,我们将在部分关卡设置 ”一起来 Hack 活动“

1. 什么是 Hack?
简单来说就是,出一个数据,满足数据合法的前提下,让某个已经 AC 的代码 WA,这就叫 Hack
2. 为什么要举办?
为了更加能提升练的作用,让我们出题人更加仔细认真,提升 ”梦想护卫舰“ 的质量,所以我们举办 “一起来 Hack" 活动
3. 如何 Hack?
这里的 Hack 不仅指 Hack 标程,还能 Hack 题目/题解,例如这个题目/题解你觉得有问题/争议,你也可以来 Hack
4. Hack 的奖励有哪些?
具体见 "Hack 规则"


名字|额外减小|tommyyu
Hack 类型|指出题目错误|Hack 程序(细节问题)
是否证实|是|是
链接|戳我|戳我
奖励|1鱼币1荣誉|2鱼币2荣誉



答题/奖励规则
1. 不能抄题解,否则无奖励,可能还会扣分;
2. 当您遇到问题时,您可以回贴提问,我会为您解答
3. 提供完整能得分的题解,均有奖励。
4. 因为额度原因,部分鱼油可能下一天才能奖励。

Hack 规则
1. Hack 经证实均有奖励,你在 Hack 时得提供完整证据、证明;
2. Hack 分为三类奖励,指出题目 Bug 奖励 1 ~ 3 的鱼币荣誉,指出标程问题(细节)奖励 2 ~ 5 的鱼币荣誉,指出标程问题(重)奖励 5 ~ 10 的鱼币荣誉
3. 奖励上限为 3 次
**** Hidden Message *****

static/image/hrline/1.gif

下一关:待更新

创作不易,如果你喜欢,别忘了评分、顶{:10_281:}


本关满意度调查

sfqxx 发表于 2023-2-11 09:45:22

看看看

额外减小 发表于 2023-2-11 09:45:31

你好。请问这里面的零件是各不相同吗

zhangjinxuan 发表于 2023-2-11 09:48:40

额外减小 发表于 2023-2-11 09:45
你好。请问这里面的零件是各不相同吗

各不相同,且不考虑顺序

zhangjinxuan 发表于 2023-2-11 09:49:45

sfqxx 发表于 2023-2-11 09:45
看看看

感谢 VIP 大佬的 贡献~{:10_279:}

sfqxx 发表于 2023-2-11 09:57:54

zhangjinxuan 发表于 2023-2-11 09:49
感谢 VIP 大佬的 贡献~

想要点鱼币({:10_264:})

额外减小 发表于 2023-2-11 10:12:20

你好
我是菜鸟。我想问问这个地方是否出错
船被破坏了,被破坏成成了 n 个零件……

但你们数了数,发现这里一共有 m 个零件,所以你们想知道,你们要最多尝试多少次,才能拼成整个船呢(不考虑零件的先后顺序,且零件互不相同)?

因为答案可能很大,所以请你对 1e9 + 7 取余

换句话说,请求出 C(n,m) % (1e9 + 7) = ?

提示:C(n,m) = C(n, m) = n! / (n - m)! / m!,在这里,n! 为 n 的阶乘
这里是不是应该改成C(m,n)(Cmn)
因为不是要从m个零件里面挑n个吗
如有误解勿喷{:10_260:}

额外减小 发表于 2023-2-11 10:14:28

这里面出现一个(n-m)!
但按照题意应该是n≤m吧{:10_260:}

tommyyu 发表于 2023-2-11 10:50:30

看看,实在想不到怎么做{:10_269:}

tommyyu 发表于 2023-2-11 10:59:24

本帖最后由 tommyyu 于 2023-2-11 11:01 编辑

题解没有return 0,直接0分{:10_256:}
只要 m < n,就能TLE{:10_256:}

zhangjinxuan 发表于 2023-2-11 11:00:40

tommyyu 发表于 2023-2-11 10:59
题解没有return 0,直接0分
只要 n < m,就能TLE

你真聪明

zhangjinxuan 发表于 2023-2-11 11:01:10

tommyyu 发表于 2023-2-11 10:59
题解没有return 0,直接0分
只要 n < m,就能TLE

会吗?除非来出一个?

tommyyu 发表于 2023-2-11 11:04:12

本帖最后由 tommyyu 于 2023-2-11 11:05 编辑

zhangjinxuan 发表于 2023-2-11 11:01
会吗?除非来出一个?

在大部分评测网站上,这种最后不写return 0可能不会扣分
但是,在ccf等考试中,不写return 0会直接让这个0分{:10_256:}
所以,只要有m<n,就可以0分{:10_256:}

额外减小 发表于 2023-2-11 11:05:54

唉。想半天没想到。看看是什么算法

zhangjinxuan 发表于 2023-2-11 11:09:16

tommyyu 发表于 2023-2-11 11:04
在大部分评测网站上,这种最后不写return 0可能不会扣分
但是,在ccf等考试中,不写return 0会直接让 ...

记住了,谢谢{:10_277:}

tommyyu 发表于 2023-2-11 11:24:26

能把十万鱼币宝箱分一下么{:10_256:}

zhangjinxuan 发表于 2023-2-11 11:29:08

tommyyu 发表于 2023-2-11 11:24
能把十万鱼币宝箱分一下么

{:10_306:}

sfqxx 发表于 2023-2-11 12:40:08

tommyyu 发表于 2023-2-11 11:24
能把十万鱼币宝箱分一下么

我出的想法,他去用了{:10_254:}

zhangjinxuan 发表于 2023-2-11 13:58:27

额外减小 发表于 2023-2-11 10:14
这里面出现一个(n-m)!
但按照题意应该是n≤m吧

您指的是题解??

额外减小 发表于 2023-2-11 15:09:31

zhangjinxuan 发表于 2023-2-11 13:58
您指的是题解??

没。我说刚才原本的题目出现了一个负数阶乘。
现在改好了
页: [1] 2
查看完整版本: 【C++板块提升计划】梦想护卫舰 第22关 组合数计算