文章

【GESP】C++二级练习 luogu-B3719 [语言月赛202303] Factorial B

GESP二级练习,纯小思维练习不涉及编程语法,难度★☆☆☆☆。

luogu-B3719 [语言月赛202303] Factorial B

题目要求

题目描述

Farmer John 的孩子做数学题时遇到了一个难题,想要请你解答一下。

这道数学题是,$n!$ 是否是 $12$ 的倍数。

$n!$ 是 $n$ 的阶乘。一般来讲,对于一个正整数 $n$,$n! = 1 \times 2 \times 3 \times \cdots \times n$。特别的,$0 ! = 1$。

Farmer John 也觉得这个问题太难了,因此他想要把这道题交给你来完成,请你帮助他完成这个问题。

输入格式

输入共一行一个整数 $n$。

输出格式

输出共一行一个字符串。

对第一行,如果 $n!$ 是 $12$ 的倍数,输出 Yes,否则输出 No

输入 #1

1
3

输出 #1

1
No

输入 #2

1
7

输出 #2

1
Yes

数据规模与约定

对于 $100\%$ 的数据,保证 $0 \leq n \leq 10 ^ {18}$。

测试点编号$n$
$1 \sim 3$$\leq 10$
$4 \sim 6$$\leq 10 ^ 6$
$7 \sim 10$$\leq 10 ^ {18}$

题目分析

解题思路

  1. 首先,我们需要理解题目的核心要求:
    • 判断 $n!$ 是否是 $12$ 的倍数
  2. 解题思路:
    • 计算 $n!$ 并检查其是否能被 $12$ 整除
    • 如果 $n \geq 4$,则 $n!$ 一定是 $12$ 的倍数,因为 其中会包含因数 $4 \times 3$。
    • 如果 $n < 4$,则不是。
  3. 具体实现:
    • 读入整数 $n$
    • 如果 $n \geq 4$,直接输出 “Yes”
    • 否则,输出”No”
    • 根据检查结果输出 “Yes” 或 “No”


示例代码

1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main() {
    int n; // 定义整数变量 n
    cin >> n; // 从标准输入读取整数 n
    if (n >= 4) { // 如果 n 大于等于 4
        cout << "Yes"; // 输出 "Yes"
    } else { // 否则
        cout << "No"; // 输出 "No"
    }
    return 0; // 返回 0,表示程序正常结束
}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页

luogu-”系列题目已加入洛谷Java、C++初学团队作业清单,可在线评测,团队名额有限,欢迎加入。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

本文由作者按照 CC BY 4.0 进行授权