试题 基础练习 阶乘计算

提交此题 评测记录

资源限制

内存限制:512.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

问题描述

  输入一个正整数n,输出n!的值。

  其中n!=1*2*3*…*n。

算法描述

  n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。

  将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。

  首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

输入格式

  输入包含一个正整数n,n<=1000。

输出格式

  输出n!的准确值。

样例输入

10

样例输出

3628800

作为一个写java程序的人,看到了这道题的python代码的时候,我的内心是有些小崩溃的,python的这些数值不用定义类型,这个东西太好了,对于这道题的作用就很明显。

先上答案。

import java.util.Scanner;public class Main{public static void main (String [] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();//因为是可能很大,所以要使用数组的方式int[] a = new int[100000];//定义了一个数组int c=0,d=0;a[0]=1;for (int i = 1; i <= n; i++) {for (int j = 0; j < a.length-1; j++) {d=a[j]*i+c;a[j] = d%10;c= d/10;//数组中的每个数都乘同一个数,并且包含进位}}for (int i = a.length-1; i >= 0; i--) {if(a[i]!=0){for (int j = i; j >= 0; j--) {System.out.print(a[j]);//第一个不为0的地方开始输出}break;}}}}

之前,自己写了一下,之后,又看了一下其他博客的答案,实验了一下,发现还是不能全通过,检查了一下原因,查看了一个它的输出

好家伙,这么大,那个数组定义为101的,肯定还是小了,之后换了好几个大小,100000是一个能够得到,满分的答案,很不错。

还有一个题解,我看到了之后,我觉得也很好,总结下来,如果引入类库进来,这样就会解决很多的麻烦。

import java.math.BigInteger;
import java.util.Scanner;public class Main{public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int n = sc.nextInt();BigInteger bgInt = new BigInteger("1");for (int i = 1; i <= n; i++) {String m = String.valueOf(i);bgInt = new BigInteger(m).multiply(bgInt);}System.out.print(bgInt);}}

阶乘计算(Java版)相关推荐

  1. java年终奖怎么算的啊,2020新版个税计算--年终奖计算[Java版]

    前言 上篇文章介绍了如何计算自己的每月工资,那年终奖又是如何计算的呢?年终奖的计算其实更加简单,因为它并不存在起征点,专项扣除等概念.也不需要扣除五险一金,下面让我们来计算一下年终奖吧. 计算税后年终 ...

  2. 个人所得税 java_个人所得税计算java版

    1 /** 2 * 计算个人所得税3 * www.xcc.cn 版权所有4 *@paramminusAmount 扣除社保的金额5 *@paramminusAmount2 当月工资(扣除社保后)(算年 ...

  3. 【JAVA】(vip)蓝桥杯试题 基础练习 阶乘计算 BASIC-30 JAVA

    目录 试题 基础练习 阶乘计算 要点 思路 代码(无注释) 代码(含有注释) 代码二,==运行超时,内存也超了==某位同学提出的是使用java的大数类BigInteger 试题 基础练习 阶乘计算 资 ...

  4. 腾讯开放平台接口鉴权(计算签名)工具类 java版

    腾讯开放平台 接口鉴权(签名)工具类 java版 用到了Hutool工具类 package top.seasmall.platform.core.config.nettyws.util;import ...

  5. 数值分析北航第八题第三次计算实习任务(附百度云源码java版)

    先上干货 ,包含word报告与源码. 链接:https://pan.baidu.com/s/1piPSQIqsBcLH_pHAYog5tw 提取码:55jo 稍加说明,这是java版的源码以及上交作业 ...

  6. C语言实验——圆柱体计算(C语言版 java版)

    Problem Description 已知圆柱体的底面半径r和高h,计算圆柱体底面周长和面积.圆柱体侧面积以及圆柱体体积.其中圆周率定义为3.1415926. Input 输入数据有一行,包括2个正 ...

  7. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  8. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  9. Java算法:牛客网小米笔试真题算法Java版1-40题

    题号 题目 知识点 难度 通过率 XM1 小米Git 树 困难 10.22% XM2 懂二进制 中等 29.90% XM3 风口的猪-中国牛市 动态规划 较难 18.73% XM4 电话号码分身 中等 ...

最新文章

  1. Android谷歌地图服务开发注册流程及问题
  2. mysql 锁测试_mysql行级锁测试 - echowu007的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 从零开始搭建物联网平台(6):消息的持久化
  4. Windows——Windows恢复环境(Windows RE)
  5. java十年技术栈[总结复习用]
  6. Java字符串String相关2
  7. JAVA计时函数的库_JAVA开发常用类库UUID、Optional、ThreadLocal、TimerTask、Base64使用方法与实例详解...
  8. LeetCode解题思路—快慢指针
  9. [转]Boost智能指针——scoped_ptr
  10. unity商店demo学习:跑酷游戏
  11. 12306抢票软件相关接口以及数据格式
  12. 极速办公如何在Excel中进行条件计数
  13. 以“实景+科幻三维建模渲染”,助力“实景三维中国建设”
  14. IDEA打jar包步骤(详细)
  15. 基美新型小体积电感器磁芯
  16. 我的浏览器 My Brower
  17. axios get带参数的请求方法
  18. android ios版本 市场占有率,最新的智能移动终端ios,android等市场占有率情况
  19. alibaba otter docker 测试环境一键生成
  20. 02 Android 植物人大战僵尸-太阳花和豌豆射手卡片

热门文章

  1. 呼叫中心客服IVR语音导航和电销自动外呼
  2. 20张程序员不得不看的内涵动图...
  3. 电脑终端与另一台电脑时间同步
  4. 看20遍还觉得很搞笑之麦兜故事片段之鱼丸粗面
  5. 简拼为sz的词语_SZ是什么的缩写?
  6. Dubbo+Flutter在线交友平台教程第三天 今日佳人功能实现
  7. 勤能补拙,一个人的成功,往往在于坚持
  8. 进阶篇:5.1)极值法(Worst Case ,WC)
  9. 首先从键盘上两个矩阵的行数n和列数m,然后输入两个矩阵A和B的元素值,最后求出两个矩阵的和C并输出其元素值。
  10. 淘宝叠猫猫瓜分3亿红包赚猫币自动生成脚本(无需安装其他软件),附每天最大限度的领取最多数量的喵币方法