java BigInteger BigDicimal例题

需要import  java.math.*;

BigInteger:

add(BigInteger val);               +

subtract(BigInteger val);        -

multiply(BigInteger val);         *

divide(BigInteger val);            /

remainder(BigInteger val);    %

compareTo(BigInteger val)     <返回-1   ==返回0  >返回1

abs();   绝对值

pow(int a)   a次幂

toString()   返回十进制的字符串

toString(int p)  返回p进制的字符串

1.【高精度】蜜蜂路线(BigInteger add操作 BigInteger.ONE常数)

题目描述

一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你:蜜蜂从蜂房M开始爬到蜂房N ,1≤M<N≤1000,有多少种爬行路线?<n≤1000,有多少种爬行路线?

输入

M,N的值。

输出

一个数表示爬行路线种数。

分析:BigInteger 的斐波那契

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

public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);

        int x = cin.nextInt();
        int y = cin.nextInt();

        y = y-x;

        BigInteger a[] = new BigInteger[1005];

        a[0] = BigInteger.ONE;
        a[1] = BigInteger.ONE;

        //System.out.println(a[0]+" "+a[1]);

        for (int i=2;i<=y;i++)
        {
            a[i] = a[i-1].add(a[i-2]);

        }
        System.out.println(a[y]);
    }
}

2.【高精度】Oliver的成绩

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

public class Main {
    public static void main(String[] args) {
        BigInteger a,b,c,max1,max2,max3;
        BigInteger x,y,z;
        Scanner cin = new Scanner(System.in);
        a = cin.nextBigInteger();
        b = cin.nextBigInteger();
        c = cin.nextBigInteger();

        max1 = a;
        max2 = b;
        max3 = c;

        int n;
        n = cin.nextInt();

        for(int i=0;i<n;i++)
        {
            x = cin.nextBigInteger();
            y = cin.nextBigInteger();
            z = cin.nextBigInteger();

            if(max1.compareTo(x)<0)
                max1 = x;
            if(max2.compareTo(y)<0)
                max2 = y;
            if(max3.compareTo(z)<0)
                max3 = z;
        }
        BigInteger ans;
        ans = max1.subtract(a);
        System.out.print(ans+" ");
        ans = max2.subtract(b);
        System.out.print(ans+" ");
        ans = max3.subtract(c);
        System.out.print(ans);
    }
}

BigDecimal

(java新手)需要注意的:

1.stripTrailingZeros() 去零 但是会是科学计数法 

加个toPlainString()可以正常表示

2.作为java新手 才知道java中的String是不可以用下标(s[0])直接取的

而需要用函数charAt(int p)才可以取第p个字符

 问题 N: 【高精度】幂运算

其他和BigInteger差不多

题目描述

小明的老师布置了一道幂运算题:一般情况下,计算机所能够处理的小数的范围和精度都是非常有限的。老师给出了一个小数a和指数b,让小明求ab。小明觉得手算非常麻烦,希望你能帮助他。

输入

共2行,第1行是a,第2行是b。O<a<l000,a的长度不超过10位,保证这个数字有一个小数点,但不保证这个数字有整数部分或小数部分。比如可以用‘.’代表0,但是这个数据不会出现。例如000.10会写成.10。1≤b≤25,为整数。

输出

只有1行,即a^b的结果。整数部分前面有0必须去掉,小数部分末尾有0也必须去掉。例如000.10100需要变为.101(整数部分为0也去掉)。输出部分必须有一个小数点。

样例输入

1.0100
12

样例输出

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

public class Main {
    public static void main(String[] args) {
        BigDecimal a;
        Scanner cin = new Scanner(System.in);
        a = cin.nextBigDecimal();
        int b = cin.nextInt();

        a = a.pow(b);
        String s = a.stripTrailingZeros().toPlainString();
        if(s.charAt(0)==‘0‘&&s.charAt(1)==‘.‘)
        {
            int len = s.length();
            s = s.substring(1, len); //得到从1到len的字串
        }
        System.out.println(s);
    }
}
 

原文地址:https://www.cnblogs.com/hao-tian/p/9853576.html

时间: 2024-08-11 00:24:03

java BigInteger BigDicimal例题的相关文章

大数运算之 Java BigInteger 的基本用法

大数运算之 Java BigInteger 的基本用法 在程序设计竞赛中会遇到高精度运算的问题,C++没有高精度运算,只能手动模拟人工运算,手动实现高精度,而 java.math 包中的 BigInteger 提供了高精度的基本运算,因此竞赛中常用 Java 解决高精度运算问题. 当然如果比赛支持 python 就当我没说. BigInteger 对象的创建 BigInteger 类在 java.math.BigInteger 包中,首先引用该包. import java.math.BigInt

Java BigInteger类

1 package demo04; 2 3 import java.math.BigInteger; 4 5 //超过long型的整数, 封装成BigInteger类型的对象 6 public class BigIntegerDemo { 7 public static void main(String[] args) { 8 //构造方法 9 BigInteger b = new BigInteger("11111111111111111111111111111111111111111111&

java BigInteger源码学习

转载自http://www.hollischuang.com/archives/176 在java中,有很多基本数据类型我们可以直接使用,比如用于表示浮点型的float.double,用于表示字符型的char,用于表示整型的int.short.long等.但是,拿整数来说,如果我们想要表示一个非常大的整数,比如说超过64位,那么能表示数字最大的long也无法存取这样的数字时,我们怎么办.以前的做法是把数字存在字符串中,大数之间的四则运算及其它运算都是通过数组完成.JDK也有类似的实现,那就是Bi

java BigInteger类的用法

import java.math.BigInteger; 1.新建一个对象 Scanner in = new Scanner(System.in); BigInteger x1 = new BigInteger("-11"); //新建一个对象 BigInteger x2 = in.nextBiginteger();//键盘输入 BigInteger y = x1.abs(); //取绝对值 BigInteger y2 = x1.add(y); //x+y int x3 = y.com

有理数类 Java BigInteger实现

import java.math.BigInteger; public class Rational extends Number implements Comparable { private BigInteger numerator;// 分子 private BigInteger denominator;// 分母 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated met

java BigInteger

用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂.用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的来处理.下面是写的一些Java中一些基本的函数的及其…… 头文件:import java.io.*; import java.util.*; import java.math.*; 读入: Scanner cin = Scanner (System.in); while(cin.hasNext())//等价于!=EOF n=cin

Java BigInteger类知识点总结

(1)程序有时需要处理大整数,java.math包中的BigInteger类提供任意精度的整数运算,可以使用构造方法: public BigInteger(String VAL)构造一个十进制的BigInteger对象,该构造方法可以发生NumberFormatException异常,也就是说,字符串参数VAL中如果含有非数字字符就会发生NumberFormatException异常. (2)BigInteger类的常用方法: public BigInteger add(BigInteger v

java接口相关例题

java接口相关习题 interface Graphics{  //接口里面只能用抽象方法  public abstract double area();    }//设置 平面类class PlaneGraphics1{    private String shape; //形状    //构造方法,有参数    public PlaneGraphics1(String shape)    {        this.shape=shape;    }    //无参数    public P

java BigInteger实现

BigInteger底层是用int[]实现的. 之前看数据结构,一直以为BigInteger是用链表实现的.但后来发现那只是练习时增加难度所用. 之后发现用String实现比链表不知道快了多少倍.就以为是用String实现. 可是一查,才发现原来使用int[]实现的. 是啊,用int[]就省去了字符转数字的麻烦! 下面给出用String实现的加和乘算法.思路和我们手算是一样的. public String mulOneDigit(String num1, char digit, int leve