1 条题解

  • 0
    @ 2025-8-24 21:14:55

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 一扶苏一
    休息结束。邮箱 yifusuyi@qq.com

    搬运于2025-08-24 21:14:54,当前版本为作者最后更新于2019-09-05 03:26:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    [语言月赛202305C] 计算阶乘 2 题解

    Source & Knowledge

    2023 年 5 月语言月赛,由洛谷网校入门计划/基础计划提供。

    本题考查简单循环。

    文字题解

    题目大意

    定义

    $$n!! = \begin{cases} n \times (n - 2) !!, & n \geq 2 \\ 1, &n = 0, 1\end{cases} $$

    2×n!n!!2 \times \frac{n!}{n!!}

    0n340 \leq n \leq 34

    解析

    分析式子:

    $n! = n \times (n - 1) \times (n - 2) \times (n - 3) \times \dots$

    $n!! = n \times (n - 2) \times (n - 4) \times (n - 6) \times \dots$

    $\frac{n!}{n!!} = \frac{n \times (n - 1) \times (n - 2) \times (n - 3) \times \dots}{n \times (n - 2) \times (n - 4) \times (n - 6) \times \dots}$

    可以发现,n!!n!! 的每个因式都是 n!n! 的因式,会被直接约分掉。例如,分数线上下 nn 都出现了,可以约分;n2n - 2 都出现了,可以约分……

    约分结束后,分母为 11,分子为 $(n - 1) \times (n - 3) \times (n - 5) \times \dots \times 1$

    我们只需要用一个循环计算上式,最后乘上 22 即可。

    注意到答案小于 2642^{64} 但是大于 2632^{63} 次方。long long 所能存储的最大正数为 26312^{63} - 1,所以不能使用 long long 存储答案,而应该使用 unsigned long long。这一类型不能表示负数,但是可以表示的最大正数是 26412^{64} - 1,答案在这一范围内。

    unsigned long long ans = 2;
    for (int i = n - 1; i > 1; i -= 2) {
      ans = ans * i;
    }
    

    视频题解

    • 1

    信息

    ID
    8645
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者