我是靠谱客的博主 坚强烤鸡,最近开发中收集的这篇文章主要介绍高精度 & 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用法 (蓝桥杯经典算法 大数阶乘 & 蓝桥杯练习系统 基础练习 阶乘计算)蓝桥杯培训内部讲解(大数阶乘)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复