题解:P11060 【MX-X4-T0】「Jason-1」x!

· · 题解

前置知识

你需要了解基础语法。

思路讲解

题目要求我们判断 n! 是否是 n+1 的倍数,且 0 \le n \le 19,计算发现 19! 是可以存的下的,不需要高精度。

因此我们可以通过 n 次乘法计算出 n!,最后判断是否能被 n+1 整除,是就输出 YES,否则输出 NO

代码展示

先提供 C++ 版本的代码:

#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f
#define endl "\n"

int n; // 定义 n
ll sum=1; // 初始化阶乘结果,注意不能为 0,记得开 long long

signed main(){
    cin >> n; // 读入

    for(int i=1;i<=n;i++) sum*=i; // 循环相乘,算阶乘

    if(sum%(n+1) == 0){ // 判断是否能被整除
        cout<<"YES"; // 输出 YES
    }else{
        cout<<"NO"; // 输出 NO
    }

    return 0; // 完结撒花!
}

接下来提供一个附加的 Python 代码,逻辑基本一致:

n = int(input()) # 读入 n,并转为数字
s=1 # 初始化阶乘结果

for i in range(1,n+1): # 循环,注意范围
    s *= i # 乘法

if s%(n+1) == 0: # 判断能否被整除
    print("YES") # 输出 YES
else:
    print("NO") # 输出 NO