简单记录一下JAVA的大数的使用,方便自己以后查询,比较基础,即使完全没有JAVA的基础的朋友也可以学习一下。
===============分割线之JAVA基础语法================
1.标准读入头文件
2.大数BigInteger这个数据类型在math中
import java.util.*; import java.math.*;
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
System.out.println(a);//自带换行的输出 System.out.print(a); //不自带换行的输出
利用 Alt+‘ / ’ 组合键完成快速地键入;
比如 要输入System.out.prinln();时,只需键入syso + 组合键 便能得到结果;
一般快速键入只需输入 第一个单词的前几位字母+下一个单词的首字母 后按下组合键进行选择就好
==================分割线之大数的使用===================
进行大数的运算,首先你要知道大数是一个封装好的类,也就是说所有的操作需要调用函数进行。并且大数的所有运算的对象必须同样是大数。
BigInteger a ;
BigInteger A[] = new BigInteger[400];//定义一个长度为400的数组
a = sc.nextBigInteger();//标准读入赋值 a = BigInteger.valueOf(1);//手动赋常值
a.add(b);//加法运算 a.subtract(b);//减法运算 a.multiply(b);//乘法运算 a.divide(b);//除法运算 a.mod(b);//取模运算
BigInteger.ONE;//1 BigInteger.ZERO;//0 BigInteger.TEN;//10
a.gcd(b);//最大公因数 a.max(b);//最大值(a,b) a.min(b);//最小值(a,b) a.modPow(k, mod);// 返回(a^k)%mod a.toString();//返回大整数的string型
============分割线之BZOJ1002轮状病毒=============
另附上BZOJ1002轮状病毒的JAVA大数AC代码帮助理解:
import java.util.*; import java.math.*; public class Main { static BigInteger A[] = new BigInteger[400]; static BigInteger B[] = new BigInteger[400]; public static void main(String[] args) { B[1] = B[2] = BigInteger.valueOf(1); B[3] = BigInteger.valueOf(4); B[4] = BigInteger.valueOf(3); B[5] = BigInteger.valueOf(11); for(int i=1;i<=300;i++){ if(i>5){ B[i] = (B[i-2].multiply(BigInteger.valueOf(3))).subtract(B[i-4]); }if(i%2==1){ A[i] = B[i].multiply(B[i]); }else { A[i]=B[i].multiply(B[i]).multiply(BigInteger.valueOf(5)); } } // TODO 自动生成的方法存根 Scanner sc = new Scanner(System.in); int n; while(sc.hasNext()){ n = sc.nextInt(); System.out.println(A[n]); } } }