Wiki_ki

导航

Java学习笔记(二)

  再我还没有接触Java时就听说了Java有个BigInteger大数类很好用,很方便,我是比较讨厌慢慢找东西看然后学东西,所以就直接上oj找了一些高精度类的题目做了一下,在做题的过程中寻找这个东西的用法,然后总结总结,大概就做了三题,poj 3982,poj 2506,poj 1405。

  大数类所用的“库”是java.math.*; 原谅我,我把import java.*.*暂且理解为C/C++里的#include <>

  poj 3982:

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

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner cin = new Scanner(System.in);
        while (cin.hasNext()) {
            BigInteger a = cin.nextBigInteger();
            BigInteger b = cin.nextBigInteger();
            BigInteger c = cin.nextBigInteger();
            BigInteger d = new BigInteger("0");
            int i;
            for (i = 4;i <= 100;i++) {
                d = a.add(b.add(c));
                a = b;
                b = c;
                c = d;
            }
            System.out.println(d);
        }
    }

}

  poj 2506 :

import java.util.*;
import java.math.*;
public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        BigInteger d[] = new BigInteger[251];
        d[0] = BigInteger.valueOf(1);
        d[1] = BigInteger.valueOf(1);
        d[2] = BigInteger.valueOf(3);
        for (int i = 3;i <= 250;i++)
            d[i] = d[i-1].add(d[i-2].multiply(BigInteger.valueOf(2)));
        Scanner cin = new Scanner(System.in);
        while (cin.hasNext()) {
            int u = cin.nextInt();
            System.out.println(d[u]);
        }
    }
}

  poj 1405:

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

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        BigInteger d[] = new BigInteger[19];
        d[1] = BigInteger.valueOf(2);
        System.out.println(d[1]);
        for (int i = 2;i <= n;i++) {
            d[i] = BigInteger.valueOf(1).add(d[i-1].multiply(d[i-1].subtract(BigInteger.valueOf(1))));
            System.out.println(d[i]);
        }
    }

}

  目前大概知道的操作如下:

  x = new BigInteger("..."); 将字符串转换为BigInteger类型

  BigInteger.valueOf(value); value 整型,将整型转换为BigInteger类型

  BigInteger.add(BigInteger) 加法

  BigInteger.subtract(BigInteger) 减法

  BigInteger.multiply(BigInteger) 乘法

  BigInteger.divide(BigInteger) 除法

  另外输入支持cin.nextBigInteger(BigInteger)操作

posted on 2012-08-18 10:45  Wiki_ki  阅读(187)  评论(0编辑  收藏  举报