[语言月赛202303] Factorial B 题解
一扶苏一
·
·
题解
[语言月赛202303] Factorial B 题解
Source & Knowledge
2023 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
本题考察分支结构和简单数学推导。
文字题解
题目大意
给定整数 n,判定 n! = 1 \times 2 \times 3 \times \dots \times n 是不是 12 的倍数。
### 解析
容易计算得出 $0! = 1$,$1! = 1$,$2! = 2$,$3! = 6$ 都不是 $12$ 的倍数。
而 $4! = 1 \times 2 \times 3 \times 4 = 1 \times 2 \times \color{red}{(3 \times 4)}$ $= 1 \times 2 \times \color{red}{12}$。
所以 $4!$ 是 $12$ 的倍数。
当 $n > 4$ 时,$n! = 1 \times 2 \times 3 \times 4 \times \dots \times n = 4! \times 5 \times 6 \times \dots \times n$,含有因子 $4$ 和 $3$,所以 $n!$ 含有因子 $4 \times 3 = 12$,所以 $n!$ 也是 $12$ 的倍数。
综上:当 $n \leq 3$ 时,$n!$ 不是 $12$ 的倍数;$n \geq 4$ 时,$n!$ 是 $12$ 的倍数。
### 读入
首先定义一个变量 $n$。注意到输入规模是 $0 \leq n \leq 10^{18}$,而 `int` 能存储的范围只有大约 $20$ 亿($2 \times 10^9$),不能满足存储要求,而 `long long` 的存储上界大约是 $9 \times 10^{18}$,可以满足存储要求。因此要用 `long long n` 来声明变量 $n$。
```cpp
long long n;
cin >> n;
```
### 判定和输出
可以使用 `if` 语句完成选择结构,其语法为 `if(A) B else C`,如果表达式 `A` 的值为真则执行语句(块)`B`,否则执行语句(块)`C`。
判断完后,对应输出 `Yes` 或 `No` 即可,注意大小写。
```cpp
if (n <= 3) {
cout << "No\n";
} else {
cout << "Yes\n";
}
```
## 视频题解
**完整代码请在视频中观看**。
