news 2026/4/23 9:52:04

洛谷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/4/23 11:38:28

【27日 Docker 日志攻坚计划】:零信任架构下的审计级日志采集、脱敏、归档与合规留存(GDPR/等保2.0双认证)

第一章&#xff1a;Docker 27 日志集中管理方案全景概览在现代容器化生产环境中&#xff0c;Docker 27&#xff08;即 Docker Engine v27.x&#xff09;引入了更精细化的日志驱动扩展机制与原生可观测性集成能力。日志集中管理不再仅是“收集转发”&#xff0c;而是涵盖采集、过…

作者头像 李华
网站建设 2026/4/23 11:34:21

Dock栏的终极自定义指南:从基础到高阶终端命令全解析

macOS Dock栏深度定制指南&#xff1a;终端命令与系统设置的终极组合 1. Dock栏基础设置与个性化调整 Dock栏作为macOS的核心交互元素&#xff0c;其基础设置往往被大多数用户忽视。通过系统偏好设置&#xff0c;我们可以进行一系列直观的调整&#xff1a; 调整Dock大小与位置&…

作者头像 李华
网站建设 2026/4/20 18:27:30

Docker 27跨平台镜像“一次构建、处处运行”神话破灭?——基于217个开源项目镜像的实证分析(附可复现测试框架源码)

第一章&#xff1a;Docker 27跨平台镜像兼容性危机的提出 Docker 27 的发布引入了对多架构构建的深度重构&#xff0c;但同时也意外暴露了长期被忽视的跨平台镜像兼容性断层——当开发者在 macOS&#xff08;Apple Silicon&#xff09;上构建的 linux/amd64 镜像&#xff0c;被…

作者头像 李华