专栏文章

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

P11060题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minwu7sg
此快照首次捕获于
2025/12/02 09:39
3 个月前
此快照最后确认于
2025/12/02 09:39
3 个月前
查看原文

前置知识

你需要了解基础语法。

思路讲解

题目要求我们判断 n!n! 是否是 n+1n+1 的倍数,且 0n190 \le n \le 19,计算发现 19!19! 是可以存的下的,不需要高精度。
因此我们可以通过 nn 次乘法计算出 n!n!,最后判断是否能被 n+1n+1 整除,是就输出 YES,否则输出 NO

代码展示

先提供 C++ 版本的代码:
CPP
#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 代码,逻辑基本一致:
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

评论

0 条评论,欢迎与作者交流。

正在加载评论...