zoukankan      html  css  js  c++  java
  • Java中的BigInteger在ACM中的应用

    Java中的BigInteger在ACM中的应用

    在ACM中的做题时,常常会遇见一些大数的问题。这是当我们用C或是C++时就会认为比較麻烦。就想有没有现有的现有的能够直接调用的BigInter,那样就方便非常多啦。在java中就有的,所以在这儿我就做一个简要的介绍吧

    —:在java中的基本头文件(java中叫包)

    import java.io.*

    importjava.util.*       我们所用的输入scanner在这个包中

    importjava.math.*          我们以下要用到的BigInteger就这这个包中

     

    二:输入与输出

    读入 Scanner cin=new Scanner(System.in)

    While(cin.hasNext())   //相当于C语言中的!

    =EOF

    n=cin.nextInt();       //输入一个int型整数

    n=cin.nextBigInteger();   //输入一个大整数

     

    System.out.print(n);      //输出n但不换行

    System.out.println();     //换行

    System.out.println(n);    //输出n并换行

    System.out.printf(“%d ”,n);     //类似C语言中的输出

     

    三:定义变量

    定义单个变量:

    int a,b,c;      //和C++ 中无差别

    BigInteger  a;   //定义大数变量a

    BigIntegerb=new BigInteger("2");   //定义大数变量 b赋值为 2;

    BigDecimaln;     //定义大浮点数类 n;

     

    定于数组:

    int a[]= new int[10]   //定义长度为10的数组a

    BigInteger  b[] =new BigInteger[100]   //定义长度为100的数组a

     

    四:表示范围

    布尔型 boolean 1 true,false false

    字节型 byte 8 -128-127 0

    字符型 char 16 ‘u000’-uffff ‘u0000’

    短整型 short 16 -32768-32767 0

    整型 int 32 -2147483648,2147483647 0

    长整型 long 64 -9.22E18,9.22E18 0

    浮点型 float 32 1.4E-45-3.4028E+38 0.0

    双精度型 double 64 4.9E-324,1.7977E+308 0.0

    BigInteger随意大的数,原则上仅仅要你的计算机内存足够大。能够有无限位

     

     

    五:经常使用的一些操作

     

    A=BigInteger.ONE;   //把0赋给A

    B=BigInteger.valueOf(3);    //把3赋给B。

    A[i]=BigInteger.valueOf(10);    //把10赋给A[i]

    c=a.add(b)        //把a与b相加并赋给c

    c=a.subtract(b)   //把a与b相减并赋给c

    c=a.multiply(b)   //把a与b相乘并赋给c

    c=a.divide(b)     //把a与b相除并赋给c

    c=a.mod(b)        // 相当于a%b

    a.pow(b)          //相当于a^b

    a.compareTo(b):      //依据该数值是小于、等于、或大于a 返回 -1、0 或 1;

    a.equals(b):    //推断两数是否相等,也能够用compareTo来取代;

    a.min(b),a.max(b):  //取两个数的较小、大者;

    注意以上的操作都必须是BigInteger类的。


    给以例子POJ  2506   

    代码:

    import java.math.*;
    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner cin=new Scanner(System.in);
    		BigInteger a[] = new BigInteger[300];
    		BigInteger b=new BigInteger("2");
    		a[0]=BigInteger.valueOf(1);
    		a[1]=BigInteger.valueOf(1);
    		a[2]=BigInteger.valueOf(3);
    		a[3]=BigInteger.valueOf(5);
    		int n;
    		
    		for(int i=3;i<=255;i++)
    		{
    			a[i]=a[i-1].add(a[i-2].multiply(b));
    		}
    		while(cin.hasNext())
    		{
    			n=cin.nextInt();
    			System.out.println(a[n]);
    		}	
    	}
    }


  • 相关阅读:
    再探最大公约数
    非旋treap
    初赛毒瘤汇总(持续更新中)
    架构漫谈阅读笔记五--以豆瓣得基础架构为例
    架构设计小论文
    第一阶段
    架构漫谈阅读笔记六--以淘宝数据魔方技术架构解析为例
    学习进度第八周
    架构漫谈阅读笔记一
    软件架构之 Refined Architecture阶段
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6795748.html
Copyright © 2011-2022 走看看