zoukankan      html  css  js  c++  java
  • 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);
        }
    }
     
  • 相关阅读:
    仿新浪首页、主题、详情页,纯html静态页面
    hdoj 4790 Just Random 【数学】
    Codeforces 97B Superset 平面分治
    HDU 1017 A Mathematical Curiosity【看懂题意+穷举法】
    Codeforces Round #221 (Div. 2) D
    一个bug在redmine中的诞生到终结
    hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决这个问题 .
    js前端3des加密 后台java解密
    进程经常使用小知识汇总
    泛型集合的使用
  • 原文地址:https://www.cnblogs.com/hao-tian/p/9853576.html
Copyright © 2011-2022 走看看