我是靠谱客的博主 坚强烤鸡,最近开发中收集的这篇文章主要介绍高精度 & Java BigInteger用法 (蓝桥杯经典算法 大数阶乘 & 蓝桥杯练习系统 基础练习 阶乘计算)蓝桥杯培训内部讲解(大数阶乘),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

蓝桥杯培训内部讲解(大数阶乘)

蓝桥杯算法教学与培训 蓝桥杯培训内部讲解(大数阶乘)

蓝桥杯练习系统 试题 基础练习 阶乘计算

一般思想

  阶乘结果极大,基本数据类型不足以容纳阶乘结果。

  首先考虑数组模拟人工运算,对数组各位模拟乘法和进位过程。

import java.util.*;
import java.math.*;

public class Main {
	public static void main(String[] args) {
		int a[]=new int[50000];
		int len=1,n;
		Scanner sc=new Scanner(System.in);
		n=sc.nextInt();
		a[1] = 1;
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= len; j++)//先按照十进制的各位计算。
				a[j] *= i;
			for (int j = 1; j <= len; j++)//处理各位上超过十进制表示值的数据进行进位模拟
			{
				if (a[i] < 10)
					continue;
				int pos = j;
				while (pos <= len)//len为当前数据的有效位数最高位
				{
					if (a[len] > 9)
						len++;
					a[pos + 1] += a[pos] / 10;
					a[pos] %= 10;
					pos++;
				}
			}
		}
		for (int i = len; i >= 1; i--)
			System.out.print(a[i]);
	}
}

利用java自带库BigInteger

关于BigInteger类

  java内部的高精度类。常用方法如下。

    <BigInteger>.add(<Object>);//相加
    <BigInteger>.subtract(<Object>);//相减
    <BigInteger>.multiply(<Object>);//乘法
    <BigInteger>.divide(<Object>);//除法
    <BigInteger>.remainder(<Object>);//取余
    <BigInteger>.pow(<Object>);//次方

  BigInteger的内部类是传值计算,类的内部方法并不改变该数据本身,而是返回计算结果。

相关试题

蓝桥杯练习系统 试题 基础练习 阶乘计算

import java.util.*;
import java.math.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		BigInteger n=sc.nextBigInteger();
		BigInteger ans=new BigInteger("1");
		BigInteger cc=new BigInteger("1");
		while(n.equals(cc)==false) {
			ans=ans.multiply(n);
			n=n.subtract(cc);
		}
		System.out.println(ans);
	}

}

最后

以上就是坚强烤鸡为你收集整理的高精度 & Java BigInteger用法 (蓝桥杯经典算法 大数阶乘 & 蓝桥杯练习系统 基础练习 阶乘计算)蓝桥杯培训内部讲解(大数阶乘)的全部内容,希望文章能够帮你解决高精度 & Java BigInteger用法 (蓝桥杯经典算法 大数阶乘 & 蓝桥杯练习系统 基础练习 阶乘计算)蓝桥杯培训内部讲解(大数阶乘)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部