java 大数详细讲解
介绍
java中用于操作大叔的类主要有俩种 第一个是BigInteger,代表大整数。第二个是BigDecimal,代表大浮点数。两种类的操作方法类似,所以我们只讲解BigInterger的用法
基本用法
Scanner input = new Scanner(System.in);
BigInteger a = input.nextBigInteger();
BigInteger b = input.nextBigInteger();
1.更改为大数数据类型
String s = "12345678987654321"
BigInteger a = new BigInteger(s);
int a =123456;
BigInteger a = BigInteger.valueOf(a);
String s = "12345678987654321";
BigInteger a =BigInteger.valueOf(s,10);//将字符串转换成10进制的大数
2.大整数的四则运算(都不改变a b的值)
a.add(b) //求a+b 加法
a.subtract(b) //求a-b 减法
a.divide(b) //求a/b 除法
a.multiply(b) //求a*b 乘法
3.大整数比较大小
a.equals(b); //如果a b相等 返回true 否则返回false
if(a.equals(a.max(b))) //如果a等于a和b中的较大者 即a>b 否则a<b
4.常用方法
a.mod(b) //求余数即a%b
a.gcd(b) //求最大公约数
a.max(b) //求最大值
a.min(b) //求最小值
a.pow(b) //求a^b的大数
5.求大数的长度
a.toString().length();
例题
1.模板
import java.math.BigInteger;
import java.util.*;
public class Main{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
BigInteger a = input.nextBigInteger();//输入一个大数
BigInteger b = BigInteger.valueOf();//初始化一个为0的大数
BigInteger c = BigInteger.valueOf();//初始化一个为1的大数
BigInteger []shu = new BigInteger[];//初始化一个4040的大数数组
int I = ;
BigInteger d = BigInteger.valueOf(I);//将int转化成BigInt
String s = "";
BigInteger f = new BigInteger(s); //将String转为BigInt
int e = ;
a = a.add(b); //a = a+b
a = a.subtract(b); //a = a-b
a = a.divide(b); //a = a/b
a = a.multiply(b); //a = a*b
a = a.mod(b); //a = a%b
if(a.equals(a.max(b)));// if(a>b)
if(b.equals(a.max(b)));// if(a<b) c = a.pow(e); //a = a^e e必须为int类型
c = a.gcd(b); //a和b的最大公约数 int len = a.toString().length(); //求大数的长度
while(input.hasNext())//一直输入
{
BigInteger k = input.nextBigInteger();
}
}
}
2.大整数阶乘(一个模板)
import java.util.*;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
BigInteger []f = new BigInteger[5000];
f[0] = f[1] = BigInteger.ONE;
for(int i=2;i<=10000;i++)
{
f[i] = f[i-1].multiply(BigInteger.valueOf(i));
} while(input.hasNext()) {
int m = input.nextInt();
System.out.println(f[m]);
}
}
}
3.Fibonacci数
import java.util.*;
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
BigInteger []f = new BigInteger[5010];
f[0] = f[1] = BigInteger.ONE;
for(int i=2;i<=5000;i++)
{
f[i] = f[i-1].add(f[i-2]);
}
while(input.hasNext()) {
int m = input.nextInt();
System.out.println(f[m]);
}
}
}
java 大数详细讲解的更多相关文章
- java 发送邮件详细讲解
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供 ...
- java大数运算(讲解)
在算法竞赛或者面试中我们经常遇到大数问题,例如求一个很大的阶层,大数加法等等. 住在这种情况下我们用常规解法(使用long long或long long int)肯定是不行的, 而我们自己用c/c++ ...
- JAVA接口详细讲解
接口 接口的概念 接口代表的是一个功能的集合,定义规范,所有的方法都是抽像方法,这是一种思想是一种规则,将这个种规则称为接口. 接口的定义 使用关键字 interface 叫做接口 修饰符 inte ...
- 第五节:详细讲解Java中的接口与继承
前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...
- 第四节:详细讲解Java中的类和面向对象思想
前言 大家好,给大家带来详细讲解Java中的类和面向对象思想的概述,希望你们喜欢 类和面向对象 在Java中怎样理解对象,创建对象和引用:什么是引用,对于基础学习的同学,要深入了解引用.示例:Stri ...
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
位运算符(二进制位运算) 运算符 运算 例子 << 左移 3 << 2 = 12 --> 3 * 2 * 2 =12 >> 右移 3 >> 1 = ...
- 第十节:详细讲解一下Java多线程,随机文件
前言 大家好,给大家带来第十节:详细讲解一下Java多线程,随机文件的概述,希望你们喜欢 多线程的概念 线程的生命周期 多线程程序的设计 多线程的概念 多线程的概念:程序是静态的,进程是动态的.多进程 ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
随机推荐
- iOS开发中的单元测试(三)——URLManager中的测试用例解析
本文转载至 http://www.cocoachina.com/cms/plus/view.php?aid=8088 此前,我们在<iOS开发中的单元测试(一)&(二)>中介绍 ...
- 【BZOJ1414/3705】[ZJOI2009]对称的正方形 二分+hash
[BZOJ1414/3705][ZJOI2009]对称的正方形 Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们 ...
- Delphi 7以来的Delphi 2009测试版新语法特性
我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ...
- Mongoose中的关联表查询 && 聚合查询
注:阅读此篇文章,需要有一定的Mongo基础.基本的不会再重复介绍. 例: 有两张表,一张是博客列表,另外一张是博客的标签表.现在我们要做两张表的插入和关联查询. 创建两张表的Schema 主表bl ...
- C++设计模式实现--策略(Strategy)模式
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/L_Andy/article/details/30489331 一. 举例说明 曾经做了一个程序,程序 ...
- C++ xml 解析器
C++的xml解析器有很多,这个知乎回答里有一个列表:https://www.zhihu.com/question/32046606 下面使用其中的RapidXml试试. 官方地址: https:// ...
- 剑指Offer:重建二叉树【7】
剑指Offer:重建二叉树[7] 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5 ...
- Shell中括号的作用
Shell中括号的作用 作者:Danbo 时间:2015-8-7 单小括号() ①.命令组.括号中的命令将会断开一个子Shell顺序执行,所以括号中的变量不能被脚本余下的部分使用.括号中多个命令之间用 ...
- 10个常见的 Android 新手误区
在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的开发社区,以及从所周知的编程语言(Java),使得开发A ...
- servlet串行拦截器实现例子
至于串行过滤器有什么作用,我实在不知.我的理解是它只是说明 过滤器的串行运行方式 需求:当用户没有登录访问更新页面的时候,跳转到登录页面 1.登录页面:login.jsp <%@ page la ...