java BigInteger BigDicimal例题
Posted zangzang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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差不多
题目描述
输入
输出
样例输入
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); } }
以上是关于java BigInteger BigDicimal例题的主要内容,如果未能解决你的问题,请参考以下文章