蓝桥杯 Java 阶乘计算
由于阶乘的增长速度非常快,想用寻常的数据类型储存是不大可能的。
所以想要计算阶乘就需要用到数组来进行高精度的计算。
用数组a来表示一个整数A,a[0] 表示A的个位,a[1] 表示A的十位。(这里采用的是逆序存储的方法,因为逆序存储在进行进位操作的时候比较方便)
话不多说,上代码。
public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();// 申请一个大数组int[] a = new int[1000];// 给数组的个位赋一个初值(因为需要对他进行乘的运算,所以必须附一个初值) a[0] = 1;for (int i = 1; i <= n; i++) {// 将数组中的每一位的数都乘这个乘数ifor (int j = 0; j < a.length; j++) {a[j] *= i;}// 进位操作for (int k = 0; k < a.length - 1; k++) {a[k+1] += a[k] / 10; // 进位a[k] %= 10; // 取余 计算出进位后该位上剩下的数}}// 定义一个下标,用来找到第一位数int index = 0;for (int i = a.length - 1; i > 0; i--) {if(a[i] != 0) {index = i;break;}}// 最后逆向输出for (int i = index; i >= 0; i--) {System.out.print(a[i]);}}
例:
逆向存储 1632 其他位默认为0
个位 | 十位 | 百位 | 千位 | … | … | … | … |
---|---|---|---|---|---|---|---|
2 | 3 | 6 | 1 | 0 | 0 | 0 | 0 |
输出时只需要找到最右边的非零数的下标,然后进行逆向输出即可。
作者目前是一名学生,如有考虑不周,或者有更好的方法请各路大神谅解批评指正,共同学习。
蓝桥杯 Java 阶乘计算相关推荐
- java蓝桥杯练习 平方计算
java蓝桥杯练习 平方计算 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 输入正整数a, m,输出a2%m,其中表示乘方,即a^2表示a的平方,%表示取余. 输入格式 输入包含两 ...
- 2018年 第9届 蓝桥杯 Java B组 省赛真题详解及总结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
- 2022第13届蓝桥杯Java省赛B组个人题解
文章目录 A. 星期计算 B. 山 C. 字符统计 D. 最少刷题数 E. 求阶乘 F. 最大子矩阵 G. 数组切分 H. 回忆迷宫 I. 红绿灯 J. 拉箱子 个人总结 A. 星期计算 思路解析: ...
- 2020年 第11届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2016年 第07届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2019年 第10届 蓝桥杯 Java B组 决赛真题详解及小结
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...
- 2020年 第11届 蓝桥杯 Java B组 省赛真题详解及小结【第1场省赛 2020.7.5】
蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2021年(第12届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:部分 ...
最新文章
- 精彩碰撞!神经网络和传统滤波竟有这火花?
- SAP转储单全面总结
- 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java
- ObservableCollection 类
- 内部同步 外部同步 java_如何用匿名内部类实现 Java 同步回调
- 解析 | K8S之网络插件exec
- C#入门详解(14)
- centos 升级内核方法
- Remote branch Develop not found in upstream origin
- python︱imagehash中的四种图像哈希方式(phash/ahash/dhash/小波hash)
- Linux系统编程三:使用man查看帮助文档
- Alex 的 Hadoop 菜鸟教程: 第22课 分布式日志收集组件:flume
- Docker配置阿里云加速器
- 【CSS】关键字 -webkit-fill-available 详解
- 张馨予一幅画拍出几十万,然而范冰冰却一直在向粉丝要画!
- python程序设计基础之注释
- 如何逼自己玩命学习,这几款超奶思的学习APP,让你爱上学习!
- context.Context
- 数据备份及恢复需求分析
- 欧特克Autodesk发布基础设施2012系列产品
热门文章
- 抖音矩阵系统源码,抖音矩阵系统定制开发look
- 【Java Swing/散列表】散列表实现电话号码查找系统——问题汇总分享
- python读取html_教你如何用 python3 提取任意 Html 主内容!
- UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
- SQLServer字符串拆分并获取某分隔符的字符串
- Hadoop--使用JavaAPI对文件解压、压缩
- 题目:信用卡还款是银行系统的重要业务,业务流程说明如下:用户有信用卡和储蓄卡,储蓄卡有查询余额和取款功能,信用卡能够查看账单金额、查看还款日和查看余额三个功能;
- Photoshop 2022(PS 2022) 激活版 win/mac
- layer.open参数;layer.open关闭事件;layer.open关闭刷新;layer.open获取子页的值;layer.open调用子页面的方法
- 2019南京征信报告办理