蓝桥杯 BASIC-30 VIP试题 阶乘计算

举报
2002 发表于 2022/02/23 19:58:07 2022/02/23
【摘要】 试题 基础练习 阶乘计算提交此题   评测记录  资源限制时间限制:1.0s   内存限制:512.0MB问题描述  输入一个正整数n,输出n!的值。  其中n!=1*2*3*…*n。算法描述  n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。  将a乘以一个整数k变为将数组A的每一...

试题 基础练习 阶乘计算

资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  输入一个正整数n,输出n!的值。
  其中n!=1*2*3*…*n
算法描述
  n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数aA[0]表示a的个位,A[1]表示a的十位,依次类推。
  将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
  首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
输入格式
  输入包含一个正整数nn<=1000。
输出格式
  输出n!的准确值。
样例输入
10
样例输出
3628800


解题思路如下--

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

//接收数据
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

//BigInteger  受输入数字大小影响较小
        BigInteger a = new BigInteger("1");

//for循环利于阶乘
        for (int i = 2; i <= n; i++) {

//BigInteger  的  multiply 用于乘法计算
            a = a.multiply(new BigInteger(String.valueOf(i)));
        }
        System.out.print(a);

    }

}

最终表现如下--
希望本篇文章对大家有所帮助!
谢谢大家!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。