news 2026/5/1 23:31:17

洛谷P1009_大整数类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
洛谷P1009_大整数类

P1009 [NOIP 1998 普及组] 阶乘之和

题目描述

用高精度计算出S=1!+2!+3!+⋯+n!S = 1! + 2! + 3! + \cdots + n!S=1!+2!+3!++n!n≤50n \le 50n50)。

其中!表示阶乘,定义为n!=n×(n−1)×(n−2)×⋯×1n!=n\times (n-1)\times (n-2)\times \cdots \times 1n!=n×(n1)×(n2)××1。例如,5!=5×4×3×2×1=1205! = 5 \times 4 \times 3 \times 2 \times 1=1205!=5×4×3×2×1=120

输入格式

一个正整数nnn

输出格式

一个正整数SSS,表示计算结果。

输入输出样例 #1

输入 #1

3

输出 #1

9

说明/提示

【数据范围】

对于100%100 \%100%的数据,1≤n≤501 \le n \le 501n50

【其他说明】

注,《深入浅出基础篇》中使用本题作为例题,但是其数据范围只有n≤20n \le 20n20,使用书中的代码无法通过本题。

如果希望通过本题,请继续学习第八章高精度的知识。

NOIP1998 普及组 第二题

解法

  • 解题逻辑思路很简单,使用循环即可,难点在于当n>20后,计算结果已经超过long的范围了,此时就要使用Java中的大整数类BigInteger

大整数类 BigInteger

  • 作用:用于处理任意精度的整数,无溢出限制,当long的范围不够使用时,就要使用BigInteger来代替long
  • 用法:
  1. 导包:需要导入java.math.BigInteger
  2. 声明并初始化一个BigInteger的对象。
    • 初始化为0:BigInteger n = BigInteger.ZERO;
    • 初始化为1:BigInteger n = BigInteger.ONE;
    • 初始化为其他数字:BigInteger n =BigInteger.valueOf(i);i为数字
  3. 调用加减乘除方法:BigInteger与long不同,不是基本数据类型,而是一个类,不能直接使用±*/来进行四则运算,需要调用对应的运算方法,传入的参数也必须是BigInteger类型的对象,如果不是则需要先将参数初始化为BigInteger的对象
    • 加法:add(BigInteger)n=n.add(BigInteger.valueOf(i))
    • 减法:subtract(BigInteger)n=n.subtract(BigInteger.valueOf(i))
    • 乘法:multiply(BigInteger)n=n.multiply(BigInteger.valueOf(i))
    • 除法:divide(BigInteger)n=n.divide(BigInteger.valueOf(i))
  4. 输出直接使用sout输出即可

题解

packageP1009;importjava.util.*;importjava.math.*;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intn=sc.nextInt();BigIntegersum=BigInteger.ZERO;BigIntegerproduct=BigInteger.ONE;for(inti=1;i<=n;i++){product=product.multiply(BigInteger.valueOf(i));sum=sum.add(product);}System.out.println(sum);}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:48:40

ChatTTS实战指南:如何根据业务场景选择最优硬件配置

技术背景&#xff1a;语音合成到底在算什么 ChatTTS 的核心是一条“自回归梅尔频谱 → 声码器”流水线。流程里 80% 的浮点算力花在自回归解码&#xff1a;每一步都要把上一轮输出的隐向量重新喂回 Transformer&#xff0c;反复迭代 200&#xff5e;600 次才能生成 1 s 语音。…

作者头像 李华
网站建设 2026/5/1 4:48:26

生产事故复盘:某金融平台Docker 27集群37次故障自动恢复成功率100%,但第38次失败原因竟是……

第一章&#xff1a;Docker 27 集群故障自动恢复概览 Docker 27 引入了原生集群级故障自愈能力&#xff0c;依托 SwarmKit 的增强调度器与分布式健康探测机制&#xff0c;在节点失联、服务崩溃或网络分区等场景下可实现秒级检测与策略化恢复。该能力不再依赖外部编排工具或定制脚…

作者头像 李华
网站建设 2026/5/1 4:47:15

基于DeeSeek构建智能客服系统的实战指南:从零搭建到生产部署

背景与痛点&#xff1a;传统客服为什么“扛不住”了&#xff1f; 过去两年&#xff0c;我帮三家中小企业做过客服系统升级&#xff0c;传统人工工单的模式几乎把运维团队逼疯&#xff1a; 高峰期排队 30 分钟起步&#xff0c;用户流失率直接飙到 18%。夜班人手不足&#xff0…

作者头像 李华
网站建设 2026/5/1 6:54:52

边缘计算+容器化双提速,Docker 27让农田传感器数据延迟降低83%,运维成本直降65%:一文吃透生产级部署手册

第一章&#xff1a;边缘计算与容器化融合驱动农业数字化转型 在农田、温室与畜牧场等分布式农业场景中&#xff0c;实时环境感知、病虫害识别与灌溉决策高度依赖低延迟响应能力。传统云计算架构因网络带宽限制与传输时延&#xff0c;难以满足毫秒级闭环控制需求&#xff1b;而边…

作者头像 李华
网站建设 2026/5/1 5:48:34

CosyVoice微调实战:从零构建高效语音合成模型的避坑指南

痛点分析&#xff1a;数据与算力的拉锯战 做语音合成微调&#xff0c;最怕两件事&#xff1a; 数据太少——几十句干净语料根本喂不饱大模型&#xff1b;卡太贵——V100 32 G 跑两天就烧掉半个月预算。 传统两阶段 TTS&#xff08;声学模型 声码器&#xff09;还要分别微调…

作者头像 李华
网站建设 2026/5/1 5:46:06

ESP32实战指南:SNTP时间同步与多服务器配置

1. SNTP协议与ESP32时间同步基础 想象一下&#xff0c;你家的智能插座需要在晚上7点自动开启台灯&#xff0c;但设备内部时钟每天快5分钟&#xff0c;一周后就会产生近半小时的误差。这就是为什么物联网设备需要SNTP&#xff08;简单网络时间协议&#xff09;——它能让ESP32像…

作者头像 李华