java 大数类 总结 整数小数(BigInteger和BigDecimal)
来源:互联网 发布:手机数据分区损坏修复 编辑:程序博客网 时间:2024/06/04 17:40
java大法好,退c保平安
看完java的大数类,决定重新做一下之前大数的题
然后再整理一下吧= =
整数部分(BigInterger)
hdu 1001 求从1加到n,n可以很大
//package BigInteger1;import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);while(cin.hasNextLong()){long n = cin.nextLong();BigInteger mul = BigInteger.ZERO;for(long i=0;i<=n;i++)mul=mul.add(BigInteger.valueOf(i)); System.out.println(mul); System.out.println(); }}}hdu 1002 大整数相加
import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);int test = cin.nextInt();for(int tt=1;tt<=test;tt++){BigInteger a = cin.nextBigInteger();BigInteger b = cin.nextBigInteger();System.out.println("Case "+tt+":");//这里不断开,用\n会报错??System.out.println(a+" + "+b+" = "+a.add(b)); if(tt!=test)System.out.println(); }}}
hdu 1041 递推公式+大数(如a[i]=a[i-1]+2*a[i-2])
import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);BigInteger [] a=new BigInteger [1005];a[1]=BigInteger.ZERO;a[2]=BigInteger.ONE;a[3]=a[2];a[4]=a[2].add(a[2].add(a[2]));for(int i=4;i<=1000;i++){a[i]=a[i-1].add(a[i-2].add(a[i-2]));}while(cin.hasNext()){//打表int n = cin.nextInt();System.out.println(a[n]);}}}
hdu 1042 n!
import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);while(cin.hasNext()){int n = cin.nextInt();BigInteger mul = BigInteger.ONE;for(int i=1;i<=n;i++)mul=mul.multiply(BigInteger.valueOf(i)); System.out.println(mul); }}}
还有高精度幂:(BigDecimal)
hdu 1063 小数的n次方
import java.io.*;import java.math.BigDecimal;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin = new Scanner(System.in);while(cin.hasNextBigDecimal()){BigDecimal ans = cin.nextBigDecimal();int n=cin.nextInt();String res = ans.pow(n).stripTrailingZeros().toPlainString();//整数去掉小数点+后面的0 if(res.startsWith("0")) //去掉前导0 { res = res.substring(1); } System.out.println(res); // 或者 if(res.charAt(0)=='0')// res = res.substring(1); //ans=ans.pow(n);//ans =ans.pow(n).stripTrailingZeros();整数去掉小数点//System.out.println(ans); }}}
小数相加:
hdu1753(都要注意去后置零,和整数去点,如果题目要求再去前置零用if
package teat1;import java.io.*;import java.math.BigDecimal;import java.util.*;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin = new Scanner(System.in);while(cin.hasNextBigDecimal()){BigDecimal a= cin.nextBigDecimal();BigDecimal b = cin.nextBigDecimal();String ans=a.add(b).stripTrailingZeros().toPlainString();System.out.println(ans);}}}
整理一下:(随便写的
对于整数的题(先不看BigDecimal)
import java.io.*;import java.math.BigInteger;import java.util.*;public class Main {public static void main(String[] args) {//声明和赋值Scanner cin=new Scanner(System.in);//在import java.util.*;包中,//实现了大整数输入的方法 cin.nextBigInteger()BigInteger big1=BigInteger.ZERO;//0 声明一个大整数并常数值赋值0BigInteger big2=BigInteger.ONE;//1BigInteger big3=BigInteger.TEN;//10BigInteger big4 =new BigInteger("1000");//赋除了0,1,10之外的常数值的方法一BigInteger big5= BigInteger.valueOf(1000);//没有new赋除了之外的常数值的方法二//BigInteger bi1 = new BigInteger(55,new Random()); 生成一个个随机的大整数BigInteger [] a=new BigInteger [1005];//声明大整数数组,并赋值a[1]=BigInteger.ZERO;a[2]=BigInteger.ONE;a[3]=a[2];a[4]= BigInteger.valueOf(3);//a[4]=a[2].add(a[2].add(a[2]));int n = cin.nextInt();System.out.println(a[n]);//手动输入int n1=cin.nextInt();//输入一个int型的n1long n2=cin.nextLong();//输入一个long的n2BigInteger n3 = cin.nextBigInteger();//声明一个大数,并手动输入这个值BigInteger n4 = cin.nextBigInteger();//case处理while(cin.hasNext()){//cin.hasNext()输入结束同c++里的while(scanf("%d",&n)!=EOF)}while(cin.hasNextLong()){//同上,这个输入的是long类型时}int test = cin.nextInt();while(test-- >0){//同c++里的while(scanf(test--))}for(int tt=4;tt<=test;tt++) {//需要记录case++时候System.out.println("Case "+tt+":");//这里不断开,用\n会报错??System.out.println(big1+" + "+big2+" = "+big1.add(big2));}//四则运算及其他System.out.println(n3.add(n4));//n3+n4System.out.println(n3.subtract(n4));//n3-n4System.out.println(n3.multiply(n4));//n3*n4System.out.println(n3.divide(n4));//n3/n4(两个大整数,整除的商System.out.println(n3.remainder(n4));//n3%n4(两个大整数,取余数System.out.println(n3.mod(n4));//同上System.out.println(n3.gcd(n4));//n3和n4的最大公约数System.out.println(n3.abs());//n3取绝对值System.out.println(n3.negate());//n3取相反数System.out.println(n3.min(n4));//n3System.out.println(n3.max(n4));//n3System.out.println(n3.abs());//n3取绝对值System.out.println(n3.pow(2));//n3的2次方(指数 System.out.println(n3.toString(2)); // 转化为 x 的 n进制; System.out.println(n3.compareTo(n4)==0); //x和y进行比较 if(big1.compareTo(big2) > 0) System.out.println("bd1 is greater than bd2"); else if(big1.compareTo(big2) == 0) System.out.println("bd1 is equal to bd2"); else if(big1.compareTo(big2) < 0) System.out.println("bd1 is lower than bd2"); }}
BigInteger(byte[])
把一个包含着(带正负号)整数的二进制补码的字节数组翻译为 BigInteger 。
BigInteger(int, byte[])
把一个整数的 sign-magnitude 表示法翻译为 BigInteger 。
BigInteger(int, int, Random)
返回有指定 bitLength(可能是素数)的随机选择的 BigInter 。
BigInteger(int, Random)
返回一个随机数,均匀分布在 [0, 2**numBits - 1] 之间
(假设由 rndSrc 提供一个公平的随机源) 。
BigInteger(String)
把一个字符串翻译为一个 BigInteger ,该字符串包含可选的负号,后面跟着一个或多个十进制数字序列。
BigInteger(String, int)
把一个字符串翻译为一个 BigInteger ,该字符串包含可选的负号,后面跟着一个或多个指定进制的数字序列。
0 0
- java 大数类 总结 整数小数(BigInteger和BigDecimal)
- Java 大数类 BigInteger和 BigDecimal
- JAVA大数类 BigInteger和BigDecimal用法
- Java大数-BigInteger BigDecimal
- Java大数BigInteger BigDecimal
- 【Java 大数类型】BigInteger和BigDecimal
- java常用类库---大数操作(BigInteger,BigDecimal)
- 大数处理类BigInteger和BigDecimal浅谈
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- Java之------大数(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- JAVA大数处理(BigInteger,BigDecimal)
- c++多态总结
- poj 2777 Count Color(线段树)
- odom->base_link
- FutureTask的用法及两种常用的使用场景
- 疑问三
- java 大数类 总结 整数小数(BigInteger和BigDecimal)
- Android N, Eclipse 中 File Explorer无法显示文件列表
- LeetCode No.216 Combination Sum III
- C++赋值操作符无重载情况下可能调用构造函数实现赋值的默认行为
- [leetcode]290. Word Pattern
- 最小二乘回归树 属性选择比率 gbdt基分类器 java
- ubuntu开启mysql外部访问权限
- 同步阻塞式I/O模型
- 二叉树的基本知识