当前位置: 首页 > news >正文

[蓝桥杯]阶乘求值【省模拟赛】

问题描述

给定 nn,求 n!n! 除以 10000000071000000007 的余数。

其中 n!n! 表示 nn 的阶乘,值为从 11 连乘到 nn 的积,即 n!=1×2×3×…×nn!=1×2×3×…×n。

输入格式

输入一行包含一个整数 nn。

输出格式

输出一行,包含一个整数,表示答案。

样例输入

3

样例输出

6

样例输入

7

样例输出

992

评测用例规模与约定

对于 30% 的评测用例,1≤n≤121≤n≤12。

对于 60% 的评测用例,1≤n≤10001≤n≤1000。

对于所有评测用例,1≤n≤10000001≤n≤1000000。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

总通过次数: 1801  |  总提交次数: 2084  |  通过率: 86.4%

代码部分:

#include <iostream>
using namespace std;const long long MOD = 1000000007;int main() {int n;cin >> n;  // 输入整数nlong long result = 1;  // 初始化结果为1(0! = 1)// 循环计算阶乘,每一步取模for (int i = 1; i <= n; i++) {result = (result * i) % MOD;}cout << result << endl;  // 输出结果return 0;
}

代码说明:

  1. 输入处理:程序读取一个整数 n

  2. 初始化结果result 初始化为1,因为0的阶乘是1(虽然题目保证n≥1,但初始化仍考虑通用性)。

  3. 循环计算

    • 使用 for 循环从1乘到n。

    • 每一步乘法后立即对 1000000007 取模,防止结果溢出。

  4. 输出结果:最终计算出的 result 即为n! mod 1000000007。

注意事项:

  • 时间复杂度:O(n),对于n=1000000,在现代计算机上可在1秒内完成。

  • 空间复杂度:O(1),仅使用常数额外空间。

  • 数据类型:使用 long long 存储结果,确保中间乘法结果(最大约1e15)不会溢出。

  • 模数选择:严格按题目要求使用模数 1000000007

http://www.xdnf.cn/news/741835.html

相关文章:

  • Thinkphp6实现websocket
  • Spring Boot养老院管理系统源码分享
  • MacOS安装Docker Desktop并汉化
  • 2.5 TypeScript 中的 instanceof 运算符
  • C++中全局变量和局部变量的区别
  • 华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【Netty系列】实现HTTP文件服务器
  • Redis:功能特性和应用场景
  • 学术合作交流
  • 生成https 证书步骤
  • 3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云
  • 计算机网络物理层基础练习
  • 华为OD机试真题——硬件产品销售方案(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 编辑器之神 Vim
  • python打卡第41天
  • Kafka ACK机制详解:数据可靠性与性能的权衡之道
  • AI炼丹日志-26 - crawl4ai 专为 AI 打造的爬虫爬取库 上手指南
  • Android之ListView
  • 第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
  • 【Kotlin】数字字符串数组集合
  • 【Dv3Admin】工具权限配置文件解析
  • 小程序使用npm包的方法
  • 《STL--stack 和 queue 的使用及其底层实现》
  • WPS快速排版
  • 前端八股 tcp 和 udp
  • Linux安装redis
  • MATLAB实现井字棋
  • 湖北理元理律师事务所:债务管理中的人本主义实践
  • 【MySQL】索引(B+树详解)
  • 接口性能优化