蓝桥杯-高精度阶乘(Java代码)

2023-11-05

问题描述
  输入一个正整数n,输出n!的值。
  其中n!=123*…*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基本类型Long,还是C\C++的Long Long类型,都是无法满足1000的阶乘的,所以我们可以用数组或Java提供的Bigintger中的类实现(这里用数组来实现)。首先需要我们需要知道一个数乘以n等于这个数的每一个位数乘以n再乘以其10多少次位相加。例如

24*5 = 2*10¹+4*5;按照这个思路我们即可以创建一个数组从低位到高位来表示一个高精度数。将高精度数num乘以一个整数k变为将数组Num的每一个元素都乘以k,请注意处理相应的进位。
首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。

      

源代码:


import java.util.Scanner;

public class n的阶乘 {

    static  int[] num = new int[10000];    //装高精度数字的数组

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        num[1] = 1;
        int n=sc.nextInt();
        Factorial(n);
    }

    public static void Factorial(int n){
        int x=1;
        for(int i = 2;i <= n; i++){     //n的阶乘
            int temp = 0;
            for(int j = 1;j <= x;j++){   //每一位数都乘以n
                int t = num[j] * i + temp;
                num[j] = t % 10;
                temp = t / 10;
            }
            while(temp > 0){       
                num[++x] = temp %10;
                temp /= 10;
            }
        }
        while(x > 0){
            System.out.print(num[x]);
        }
    }

}

题解:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯-高精度阶乘(Java代码) 的相关文章

随机推荐

  • day22 二叉树

    235 二叉搜索树的最近公共祖先 可以按照二叉树的最近公共祖先进行操作 也可以按照搜索树的特征 无需进行回溯 从上到下进行遍历 701 二叉搜索树中的插入操作 将固定的数值插入到合适的位置 450 删除二叉搜索树中的节点 分几种情况 删除节
  • 企业实践

    欢迎关注 全栈工程师修炼指南 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 进阶实践 再到 放弃学习 花开堪折直须折 莫待无花空折枝 文章目录 0x00 前言简述 什么是裸金属服务器 什么是IPMI 它的用途是什么 0x
  • (Java)leetcode-113 Path Sum II(路径总和 II)

    题目描述 给定一个二叉树和一个目标和 找到所有从根节点到叶子节点路径总和等于给定目标和的路径 说明 叶子节点是指没有子节点的节点 示例 给定如下二叉树 以及目标和 sum 22 5 4 8 11 13 4 7 2 5 1 返回 5 4 11
  • Pytorch 基于经典模型LeNet-5训练MNIST数据集手写数字

    LeNet 5简介 LeNet 5官网链接 卷积神经网络是一种特殊的多层神经网络 与几乎所有其他神经网络一样 它们使用反向传播算法版本进行训练 它们的不同之处在于架构 卷积神经网络旨在通过最少的预处理直接从像素图像中识别视觉模式 他们可以识
  • node + selenium-webdriver 进行Web自动化测试

    1 环境安装 nodejs安装 webdriver安装 安装各浏览器的驱动 通过各浏览器的驱动程序 操作浏览器 chrome 驱动安装 每个版本的浏览器用到的webdriver不同 可以通过chrome右上角 gt 帮助 gt 关于 Chr
  • 定义和声明的区别

    对于变量来说 定义就是声明 例如 int a 我们可是说它是定义也可以说它是声明 但是对于函数来说定义和声明完全不是一回事 void sum int a int b 这是函数的声明 void sum int a int b 整体是函数的定义
  • 纯代码的3D玫瑰花,有个这个还怕女朋友不开心?

    先上效果图 再上代码
  • 【hortonworks/registries】Parameter Schema name is null

    1 背景 修改了hortonworks registries的0 9版本的源码后 加入了json格式 然后部署后 添加schema的时候报错如下 INFO 2020 08 18 07 04 18 802 com hortonworks
  • es6之对象的扩展

    function getPoint const x 1 const y 10 return x y getPoint x 1 y 10 CommonJS 模块输出一组变量 就非常合适使用简洁写法 let ms function getIte
  • 【Metashape精品教程4】软件设置

    Metashape精品教程4 软件设置 文章目录 Metashape精品教程4 软件设置 前言 一 一般 二 GPU 三 网络 四 Appearance 五 高级 六 Agisoft Metashape1 8专业版用户手册 前言 Metas
  • C - 一只小蜜蜂...

    有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房 不能反向爬行 请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数 其中 蜂房的结构如下所示 Input 输入数据的第一行是一个整数N 表示测试实例的个数 然后是N 行数据 每行包含两个整数a和b 0
  • Java UnknownHostException –服务器的无效主机名–如何解决?

    An UnknownHostException的快速指南 如果在为远程方法调用创建到远程主机的连接时发生java net UnknownHostException 则会抛出该快速指南 UnknownHostException的预防方法 1
  • cookie 和session 的区别详解

    原文地址 http www cnblogs com shiyangxt archive 2008 10 07 1305506 html 这些都是基础知识 不过有必要做深入了解 先简单介绍一下 二者的定义 当你在浏览网站的时候 WEB 服务器
  • 用Python进行面向对象编程:提高代码可重用性和扩展性

    数据来源 01 初识对象 生活中数据的组织 程序中数据的组织 使用对象组织数据 演示 演示使用对象组织数据 在程序中设计表格 我们称之为 设计类 class class Student name None 记录学生姓名 gender Non
  • [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121552941 目录 1 主要的技术
  • BUUCTF Misc 二维码 & 你jing然赶我走 & 大白 & N种方法解决 & 乌镇峰会种图1 & 基础po解

    目录 二维码 你竟然赶我走 大白 N种方法解决 乌镇峰会种图 基础po解 二维码 下载文件 一个二维码 使用 QR research扫描 扫描完提示flag就在这 把二维码拖入010 editor打开 有个txt文档 使用kali中的bin
  • win7安装vmtools

    打开该虚拟机的虚拟机设置 选择软盘 设备状态设置为启动时连接 连接选择使用物理驱动器并使用自动检测 如图所示 然后保存并退出设置 在虚拟机选项中就可以选择安装vmtools了 或者在该虚拟机中选择软盘进行安装
  • 一周简报(维护项目空间)

    这一周 是9月的第三周了 我依然战斗在XX海油上 本周我的主要任务是处理项目空间中的一个需求变更 顾客就是上帝 对于他们合理的需求 我们努力去做到尽善尽美 当然也要保证在客户要求的时间内去完成 在这个高节奏 快步伐的时代 效率和质量是大家追
  • Unity 游戏框架搭建 2019 (四十六) 简易消息机制

    在上一篇 我们接触了单例 使用单例解决了我们脚本之间访问的问题 脚本之间访问其实有更好的方式 我们先分下脚本访问脚本的几种形式 第一种 A GameObject 是 B GameObject 的 Parent 或者是中间隔着几个层级的 Pa
  • 蓝桥杯-高精度阶乘(Java代码)

    问题描述 输入一个正整数n 输出n 的值 其中n 123 n 算法描述 n 可能很大 而计算机能表示的整数范围有限 需要使用高精度计算的方法 使用一个数组A来表示一个大整数a A 0 表示a的个位 A 1 表示a的十位 依次类推 将a乘以一