news 2026/4/18 19:59:44

洛谷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/17 14:27:52

TileLang-Ascend学习周回顾与激励活动

学习周圆满收官&#xff0c;实践征程开启&#xff5c;TileLang-Ascend五天学习周回顾与奖励计划公布 为期五天的 TileLang-Ascend学习周 已于2月6日圆满落幕。课程自2月2日开播以来&#xff0c;吸引了众多开发者与算法工程师的持续关注与参与。在TileLang核心开发团队老师的带…

作者头像 李华
网站建设 2026/4/17 16:45:28

智能客服Agent实战:基于LLM的高效对话系统架构与避坑指南

背景痛点&#xff1a;规则引擎的“天花板” 过去三年&#xff0c;我先后维护过两套基于规则引擎的客服系统。它们用 DSL 描述“if-关键词 then 答案”的决策树&#xff0c;上线初期响应速度极快&#xff0c;CPU 占用不到 5%。然而随着 SKU 膨胀到 3 万&#xff0c;长尾问题占比…

作者头像 李华
网站建设 2026/4/16 10:50:21

CANN算子量化——AIGC轻量化部署的低精度算子适配方案

cann组织链接&#xff1a;https://atomgit.com/cann ops-nn仓库链接&#xff1a;https://atomgit.com/cann/ops-nn 随着AIGC技术向边缘端、移动端等轻量化场景渗透&#xff0c;智能终端、边缘服务器等设备的硬件资源有限&#xff08;显存小、计算能力弱&#xff09;&#xff0…

作者头像 李华