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

蓝桥杯2023年第十四届省赛真题-阶乘求和

一、题目 

【问题描述】

令 S = 1 ! + 2 ! + 3 ! + . . . + 202320232023 ! S = 1! + 2! + 3! + ... + 202320232023!S=1!+2!+3!+...+202320232023!,求 S SS 的末尾 9 位数字。 提示:答案首位不为 0。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分

二、思路

        我自己想的时候是直接去计算1~202320232023的阶乘,可是202320232023超过了int的范围,也超过了long的范围,于是查看了答案,目前有两种思路:

        1.法一

        我们可以看到从39的阶乘之后后9位的阶乘都是0,(这也是题目中为啥让我们算末尾9位数了,相当于不用加40,41,42...等的阶乘),转化为,求1~39的阶乘和。

各阶乘数
10!3628800
20!2432902008176640000
30!                                           265252859812191058636308 480000000
...
39!                20397882081197443358640281739902897356 800000000
40!              815915283247897734345611269596115894272 000000000
41!         33452526613163807108170062053440751665152 000000000
42!      1405006117752879898543142606244511569936384 000000000
43!    60415263063373835637355132068513997507264512 000000000
44!2658271574788448768043625811014615890319638528 000000000

        但我们也不是单纯的算1~39的阶乘,因为计算的过程中数将会非常的大,我们在每次算到某个数的阶乘时把它对 模运算9 得到后9位数字 ,同时,把这个数加到阶乘和 里的时候也要 模9,最终直接输出即可。

package lan2023;public class A阶乘求和 {public static void main(String[] args) {long s = 0;long j = 1;for(int i = 1; i <= 39; i++) {j = j * i % (long)1e9; s = s + j;s = s % (long)1e9;}System.out.println(s);}
}

运行结果: 420940313

二、法二:

        因为这个题涉及到阶乘 甚至要 求和,我们此时可以使用BigInteger类 ,

创建BigInteger类:

以字符串的形式:BigInteger sum = new BigInteger("0");

以long型数据:BigInteger sum = BigInteger.valueOf(0);

方法:

加 a.add(b)

减 a.subtract(b)

乘 a.multiply(b)

除 a.divide(b)

比较大小 a.compareTo(b)

package lan2023;import java.math.BigInteger;public class A阶乘求和 {public static void main(String[] args) {	BigInteger sum = BigInteger.valueOf(0);BigInteger j = BigInteger.valueOf(1);for(int i = 1; i <= 39; i++) {j = j.multiply(BigInteger.valueOf(i));sum = sum.add(j);}System.out.println(sum);//最后记得取后9位}
}

使用 大数(BigInteger) 时也没什么不同,就是不管啥时候要使用他的方法,运算的时候 两个数都要是大数 注意: 将一个整数a转化位大数 BigInteger.valueOf(a)

http://www.lryc.cn/news/322077.html

相关文章:

  • 多租户平台前端存储结构的选择
  • C++11 新特性:常量表达式 constexpr(下)
  • 大数据开发--02.环境准备
  • 选择word中的表格VBA
  • 开放签开源电子签章白皮书-简版
  • uniapp、vue2.6、H5,利用腾讯TRTC,快速跑通1v1视频功能
  • Spring Data访问Elasticsearch----查询方法
  • PyTorch 深度学习(GPT 重译)(四)
  • 视频无水印批量下载软件|抖音视频提取工具
  • 【linux】环境基础|开发工具|gcc|yum|vim|gdb|make|git
  • 小程序中实现轮播图左向堆叠
  • 零基础入门数据挖掘系列之「建模调参」
  • 如何在Mac中删除照片?这里有详细步骤
  • Qt笔记 事件处理_鼠标事件
  • 【Vue】三、使用ElementUI实现图片上传
  • ffmpeg的ffprobe.exe查询修改视频信息
  • Windows 2019服务器上安装NFS服务器
  • 元素定位之xpath和css
  • JavaScript 什么是纯函数,有哪些常见的纯函数
  • c++ 指针大小
  • IBM SPSS Statistics:提升数据处理效率的利器
  • is ignored, because it exists, maybe from xml file
  • Spark面试整理-Spark是什么?
  • Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化
  • 云蜜罐技术(德迅猎鹰)诞生
  • ARM:汇编点灯
  • 69: 偷菜时间表(python)
  • 【计算机视觉】三、图像处理——实验:图像去模糊和去噪、提取边缘特征
  • 用css滤镜做颜色不同的数据卡片(背景图对于css滤镜的使用)
  • 2024年第六届区块链与物联网国际会议(BIOTC 2024)即将召开!