Java大数,高精度
生活随笔
收集整理的這篇文章主要介紹了
Java大数,高精度
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import java.math.*;
import java.util.*;
import java.io.*;
public class HDU1002{public static void main(String[] args){int t=1,T;Scanner cin=new Scanner(System.in);BigInteger a,b;T=cin.nextInt();for(int i=1;i<=t;++i)//while(t--)//內(nèi)必須是bool 類型的{a=cin.nextBigInteger();b= cin.nextBigInteger();System.out.println("Case "+i+":");System.out.println(a+" + "+ b + " = "+a.add(b));if(t!=T)System.out.println();t++;}}
}
/*package SXY;
import java.io.*;
import java.math.*;
import java.util.*;
public class HDU1042{public static void main(String [] args){Scanner cin =new Scanner(System.in);BigInteger t;while(cin.hasNextBigInteger()){t=cin.nextBigInteger();BigInteger a=new BigInteger("1"),b=new BigInteger("2");while(t.compareTo(b)>=0){a=a.multiply(b);b = b.add(BigInteger.ONE);}System.out.println(a);}}
}*/
package HDU;
import java.io.*;
import java.math.*;
import java.util.*;
public class HDU1042{public static void main(String [] args){Scanner cin =new Scanner(System.in);while(cin.hasNextInt()){int t=cin.nextInt();BigInteger [] a=new BigInteger[10001];a[0]=BigInteger.ONE;for(int i=1;i<=t;++i){a[i]=a[i-1].multiply(BigInteger.valueOf(i));} System.out.println(a[t]);}}
}
package HDU; //import java.math.*; //import java.util.*; /*public class HDU1047{public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=cin.nextInt();while(t!=0){BigInteger b,a=new BigInteger("0");while(cin.hasNextBigInteger()){b=cin.nextBigInteger();if(b.compareTo(BigInteger.valueOf(0))==0){System.out.println(a);//if(t!=1)System.out.println();break;}a=a.add(b);}t--;} } }*/ import java.math.*; import java.util.*; public class HDU1047{public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=cin.nextInt();while(t!=0){BigInteger b,a= BigInteger.ZERO;while(cin.hasNextBigInteger()){b=cin.nextBigInteger();if(b.equals(BigInteger.ZERO)){System.out.println(a);//if(t!=1)System.out.println();break;}a=a.add(b);}t--;} } } package HDU; import java.math.*; import java.util.*; import java.io.*; public class HDU1316{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigInteger a=new BigInteger("8",2),b;BigInteger [] fib=new BigInteger[1005];//大數(shù)允許最大數(shù)組長(zhǎng)度10位數(shù)1999999999fib[0]=BigInteger.ZERO;//,逗號(hào)都不讓用fib[1]=BigInteger.ONE;fib[2]=BigInteger.ONE.add(BigInteger.ONE);for(int i=3;i<1005;++i)fib[i]=fib[i-1].add(fib[i-2]);//+fib[i-2];while(cin.hasNextBigInteger()){a=cin.nextBigInteger();b=cin.nextBigInteger();//int low=0,high=1001;if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0)break;int ans=0;for(int i=1;i<1005;++i){if(a.compareTo(fib[i])<=0&&b.compareTo(fib[i])>=0)ans++;if(b.compareTo(fib[i])<0)break;}System.out.println(ans);} } }/* import java.io.*; import java.util.*; import java.math.BigDecimal; import java.math.BigInteger;//聲明BigInteger大數(shù)類 public class HDU1316 {public static void main(String args[]){Scanner cin = new Scanner(System.in);BigInteger a,b; BigInteger fac[]=new BigInteger[1005];//BigInteger zero=BigInteger.ZERO;fac[1]=BigInteger.valueOf(1);fac[2]=BigInteger.valueOf(2);for(int i=3; i<1005; ++i) fac[i]=fac[i-1].add(fac[i-2]);while(cin.hasNextBigInteger()){a=cin.nextBigInteger();b=cin.nextBigInteger();if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0)break;int ans=0;for(int i=1; i<1005; ++i){if(a.compareTo(fac[i])<=0&&b.compareTo(fac[i])>=0)ans++;if(b.compareTo(fac[i])<0) break;}System.out.println(ans);}} } */ package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU1715{public static void main(String[] args){Scanner cin=new Scanner(System.in);int a;int n;BigInteger[] fib=new BigInteger[1005];fib[1]=BigInteger.ONE;fib[2]=BigInteger.ONE;for(int i=3;i<1001;++i){fib[i]=fib[i-1].add(fib[i-2]);}n=cin.nextInt();//nextwhile(n-->0){a=cin.nextInt();System.out.println(fib[a]);} } }
package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU1753{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigDecimal a,b;//=new BigInteger;BigDecimalwhile(cin.hasNextBigDecimal()){a=cin.nextBigDecimal();b=cin.nextBigDecimal();System.out.println(a.add(b).stripTrailingZeros().toPlainString() );//stripTrailingZeros() 是去除尾部多余的0,toPlainString()是為了不讓他變成科學(xué)計(jì)數(shù)法}} } //這道題可以地推來做,和之前做過的poj2506的方格組成2*n的屬于同一種類型。題解上有這樣一個(gè)變形 類似于一個(gè)有n級(jí)的樓梯,一次可以上一個(gè)臺(tái)階,也可以上兩個(gè)臺(tái)階,問一共有多少種方法。 package HDU; import java.math.*; import java.util.*; public class HDU1865{public static void main(String[] args){Scanner cin=new Scanner(System.in);int n;BigInteger a;BigInteger [] fib=new BigInteger[205];fib[1]=BigInteger.ONE;fib[2]=BigInteger.valueOf(2);for(int i=3;i<205;++i)fib[i]=fib[i-1].add(fib[i-2]);n=cin.nextInt();while(n-->0){a=cin.nextBigInteger();System.out.println(fib[a.toString().length()]);}} } //舉個(gè)例子 長(zhǎng)寬是30x12的,要是分成12x12的有12x4的浪費(fèi)(兩個(gè)12x12的),要是用他們的最大公約數(shù),6就會(huì)沒有浪費(fèi) /*說到此題不如先說下二進(jìn)制GCD的算法,也就是GCD的幾個(gè)性質(zhì): 1. 如果a,b都是偶數(shù), 則gcd(a, b) = gcd(a/2, b/2) 2. 如果a是奇數(shù), b是偶數(shù), 則gcd(a, b) = gcd(a, b/2) 3. 如果a,b都是奇數(shù), 則gcd(a, b) = gcd((a-b)/2, b) */ package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU5050{public static void main(String [] args){Scanner cin=new Scanner(System.in);int n;n=cin.nextInt();BigInteger a,b;for(int i=1;i<=n;++i){a=cin.nextBigInteger(2);//b=cin.nextBigInteger(2); System.out.print("Case #"+i+':');System.out.println(' '+ a.gcd(b).toString(2));//轉(zhuǎn)換器二進(jìn)制//String q=cin.next();// String p=cin.next();// BigInteger p1=new BigInteger(q,2);//BigInteger q1=new BigInteger(q,2);}} } //輸入的第一行包括兩個(gè)整數(shù):M和N(2<=M,N<=36)。 //下面的一行輸入一個(gè)數(shù)X,X是M進(jìn)制的數(shù),現(xiàn)在要求你將M進(jìn)制的數(shù)X轉(zhuǎn)換成N進(jìn)制的數(shù)輸出。 package HDU; import java.math.*; import java.io.*; import java.util.*; public class 九度Oj1080{public static void main(String [] args){Scanner cin=new Scanner(System.in);// BigInteger a,b;// a=cin.nextBigInteger();//// b=cin.nextBigInteger();// String s=cin.next();// BigInteger c=new BigInteger(a,10);String s;int a,b;a=cin.nextInt();b=cin.nextInt();s=cin.next();BigInteger aa=new BigInteger(s,a);//BigInter m = new BigInteger(st, base); // st是字符串,base是st的進(jìn)制. (base <= 36).System.out.println(aa.toString(b));} } package HDU;import java.util.*; import java.math.*;public class 進(jìn)制轉(zhuǎn)換模板 {public static void main(String[] args){Scanner cin=new Scanner(System.in);//BigInteger a=new BigInteger("8",2),b;//long l=a.longValue();int a;a=cin.nextInt();tenToTwo(a);}public static void tenToTwo(int q){if(q==0||q==1)System.out.print(q);else{tenToTwo(q/2);System.out.print(q%2);}}} //模板/* import java.util.*; import java.math.*;public class 進(jìn)制轉(zhuǎn)換模板 {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);String s=cin.nextLine();int f=cin.nextInt();int t=cin.nextInt();System.out.println(change(s,f,t));}//num 要轉(zhuǎn)換的數(shù) from源數(shù)的進(jìn)制 to要轉(zhuǎn)換成的進(jìn)制 public static String change(String num,int from,int to){return new BigInteger(num,from).toString(to);} } */ package POJ; import java.math.*; //import java.io.*; import java.util.*; public class POJ1131{public static void main(String[] args){Scanner cin=new Scanner(System.in);String a;while(cin.hasNext()){a=cin.next();// nextBigDemocal();//.abs();// System.out.print( b. BigDecimal(a,8).toString(10)); BigDecimal 沒有進(jìn)制轉(zhuǎn)化的構(gòu)造函數(shù), 模擬// BigDecimal b=new BigDecimal("8");BigDecimal b=new BigDecimal(1);//nteger c=new BigInteger("1"); 注意兩者分構(gòu)造函數(shù) BigInteger 是String int len=a.length();BigDecimal ans= BigDecimal.ZERO;for(int i=2;i<len;++i){b = b.divide(new BigDecimal("8")); // b=b.pow(-1);// gg !!!ans = ans.add(new BigDecimal(a.charAt(i)-'0').multiply(b)); }System.out.println(a+" [8] = "+ans+" [10]");} } } package POJ; import java.math.*; //import java.io.*; import java.util.*; public class POJ2506{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigInteger [] a=new BigInteger[260];int b;a[0]=BigInteger.ONE;a[1]=BigInteger.ONE;for(int i=2;i<=255;++i)a[i]=a[i-1].add(new BigInteger("2").multiply(a[i-2]));while(cin.hasNext()){b=cin.nextInt();System.out.println(a[b]);;}} }
package POJ; import java.math.*; import java.io.*; import java.util.*; public class POj1001{public static void main(String [] args){Scanner cin=new Scanner(System.in);BigDecimal a;int b;while(cin.hasNextBigDecimal()){a=cin.nextBigDecimal();b=cin.nextInt();a=a.pow(b);a=a.stripTrailingZeros();// a=a.toPlainString();String aa=a.toPlainString();//這個(gè)是String中的方法if(aa.startsWith("0."))//判斷是否是0.開頭aa=aa.substring(1);//從第一位開始System.out.println(aa); } } }
package HDU; //import java.math.*; //import java.util.*; /*public class HDU1047{public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=cin.nextInt();while(t!=0){BigInteger b,a=new BigInteger("0");while(cin.hasNextBigInteger()){b=cin.nextBigInteger();if(b.compareTo(BigInteger.valueOf(0))==0){System.out.println(a);//if(t!=1)System.out.println();break;}a=a.add(b);}t--;} } }*/ import java.math.*; import java.util.*; public class HDU1047{public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=cin.nextInt();while(t!=0){BigInteger b,a= BigInteger.ZERO;while(cin.hasNextBigInteger()){b=cin.nextBigInteger();if(b.equals(BigInteger.ZERO)){System.out.println(a);//if(t!=1)System.out.println();break;}a=a.add(b);}t--;} } } package HDU; import java.math.*; import java.util.*; import java.io.*; public class HDU1316{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigInteger a=new BigInteger("8",2),b;BigInteger [] fib=new BigInteger[1005];//大數(shù)允許最大數(shù)組長(zhǎng)度10位數(shù)1999999999fib[0]=BigInteger.ZERO;//,逗號(hào)都不讓用fib[1]=BigInteger.ONE;fib[2]=BigInteger.ONE.add(BigInteger.ONE);for(int i=3;i<1005;++i)fib[i]=fib[i-1].add(fib[i-2]);//+fib[i-2];while(cin.hasNextBigInteger()){a=cin.nextBigInteger();b=cin.nextBigInteger();//int low=0,high=1001;if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0)break;int ans=0;for(int i=1;i<1005;++i){if(a.compareTo(fib[i])<=0&&b.compareTo(fib[i])>=0)ans++;if(b.compareTo(fib[i])<0)break;}System.out.println(ans);} } }/* import java.io.*; import java.util.*; import java.math.BigDecimal; import java.math.BigInteger;//聲明BigInteger大數(shù)類 public class HDU1316 {public static void main(String args[]){Scanner cin = new Scanner(System.in);BigInteger a,b; BigInteger fac[]=new BigInteger[1005];//BigInteger zero=BigInteger.ZERO;fac[1]=BigInteger.valueOf(1);fac[2]=BigInteger.valueOf(2);for(int i=3; i<1005; ++i) fac[i]=fac[i-1].add(fac[i-2]);while(cin.hasNextBigInteger()){a=cin.nextBigInteger();b=cin.nextBigInteger();if(a.compareTo(BigInteger.ZERO)==0&&b.compareTo(BigInteger.ZERO)==0)break;int ans=0;for(int i=1; i<1005; ++i){if(a.compareTo(fac[i])<=0&&b.compareTo(fac[i])>=0)ans++;if(b.compareTo(fac[i])<0) break;}System.out.println(ans);}} } */ package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU1715{public static void main(String[] args){Scanner cin=new Scanner(System.in);int a;int n;BigInteger[] fib=new BigInteger[1005];fib[1]=BigInteger.ONE;fib[2]=BigInteger.ONE;for(int i=3;i<1001;++i){fib[i]=fib[i-1].add(fib[i-2]);}n=cin.nextInt();//nextwhile(n-->0){a=cin.nextInt();System.out.println(fib[a]);} } }
package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU1753{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigDecimal a,b;//=new BigInteger;BigDecimalwhile(cin.hasNextBigDecimal()){a=cin.nextBigDecimal();b=cin.nextBigDecimal();System.out.println(a.add(b).stripTrailingZeros().toPlainString() );//stripTrailingZeros() 是去除尾部多余的0,toPlainString()是為了不讓他變成科學(xué)計(jì)數(shù)法}} } //這道題可以地推來做,和之前做過的poj2506的方格組成2*n的屬于同一種類型。題解上有這樣一個(gè)變形 類似于一個(gè)有n級(jí)的樓梯,一次可以上一個(gè)臺(tái)階,也可以上兩個(gè)臺(tái)階,問一共有多少種方法。 package HDU; import java.math.*; import java.util.*; public class HDU1865{public static void main(String[] args){Scanner cin=new Scanner(System.in);int n;BigInteger a;BigInteger [] fib=new BigInteger[205];fib[1]=BigInteger.ONE;fib[2]=BigInteger.valueOf(2);for(int i=3;i<205;++i)fib[i]=fib[i-1].add(fib[i-2]);n=cin.nextInt();while(n-->0){a=cin.nextBigInteger();System.out.println(fib[a.toString().length()]);}} } //舉個(gè)例子 長(zhǎng)寬是30x12的,要是分成12x12的有12x4的浪費(fèi)(兩個(gè)12x12的),要是用他們的最大公約數(shù),6就會(huì)沒有浪費(fèi) /*說到此題不如先說下二進(jìn)制GCD的算法,也就是GCD的幾個(gè)性質(zhì): 1. 如果a,b都是偶數(shù), 則gcd(a, b) = gcd(a/2, b/2) 2. 如果a是奇數(shù), b是偶數(shù), 則gcd(a, b) = gcd(a, b/2) 3. 如果a,b都是奇數(shù), 則gcd(a, b) = gcd((a-b)/2, b) */ package HDU; import java.math.*; import java.io.*; import java.util.*; public class HDU5050{public static void main(String [] args){Scanner cin=new Scanner(System.in);int n;n=cin.nextInt();BigInteger a,b;for(int i=1;i<=n;++i){a=cin.nextBigInteger(2);//b=cin.nextBigInteger(2); System.out.print("Case #"+i+':');System.out.println(' '+ a.gcd(b).toString(2));//轉(zhuǎn)換器二進(jìn)制//String q=cin.next();// String p=cin.next();// BigInteger p1=new BigInteger(q,2);//BigInteger q1=new BigInteger(q,2);}} } //輸入的第一行包括兩個(gè)整數(shù):M和N(2<=M,N<=36)。 //下面的一行輸入一個(gè)數(shù)X,X是M進(jìn)制的數(shù),現(xiàn)在要求你將M進(jìn)制的數(shù)X轉(zhuǎn)換成N進(jìn)制的數(shù)輸出。 package HDU; import java.math.*; import java.io.*; import java.util.*; public class 九度Oj1080{public static void main(String [] args){Scanner cin=new Scanner(System.in);// BigInteger a,b;// a=cin.nextBigInteger();//// b=cin.nextBigInteger();// String s=cin.next();// BigInteger c=new BigInteger(a,10);String s;int a,b;a=cin.nextInt();b=cin.nextInt();s=cin.next();BigInteger aa=new BigInteger(s,a);//BigInter m = new BigInteger(st, base); // st是字符串,base是st的進(jìn)制. (base <= 36).System.out.println(aa.toString(b));} } package HDU;import java.util.*; import java.math.*;public class 進(jìn)制轉(zhuǎn)換模板 {public static void main(String[] args){Scanner cin=new Scanner(System.in);//BigInteger a=new BigInteger("8",2),b;//long l=a.longValue();int a;a=cin.nextInt();tenToTwo(a);}public static void tenToTwo(int q){if(q==0||q==1)System.out.print(q);else{tenToTwo(q/2);System.out.print(q%2);}}} //模板/* import java.util.*; import java.math.*;public class 進(jìn)制轉(zhuǎn)換模板 {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin=new Scanner(System.in);String s=cin.nextLine();int f=cin.nextInt();int t=cin.nextInt();System.out.println(change(s,f,t));}//num 要轉(zhuǎn)換的數(shù) from源數(shù)的進(jìn)制 to要轉(zhuǎn)換成的進(jìn)制 public static String change(String num,int from,int to){return new BigInteger(num,from).toString(to);} } */ package POJ; import java.math.*; //import java.io.*; import java.util.*; public class POJ1131{public static void main(String[] args){Scanner cin=new Scanner(System.in);String a;while(cin.hasNext()){a=cin.next();// nextBigDemocal();//.abs();// System.out.print( b. BigDecimal(a,8).toString(10)); BigDecimal 沒有進(jìn)制轉(zhuǎn)化的構(gòu)造函數(shù), 模擬// BigDecimal b=new BigDecimal("8");BigDecimal b=new BigDecimal(1);//nteger c=new BigInteger("1"); 注意兩者分構(gòu)造函數(shù) BigInteger 是String int len=a.length();BigDecimal ans= BigDecimal.ZERO;for(int i=2;i<len;++i){b = b.divide(new BigDecimal("8")); // b=b.pow(-1);// gg !!!ans = ans.add(new BigDecimal(a.charAt(i)-'0').multiply(b)); }System.out.println(a+" [8] = "+ans+" [10]");} } } package POJ; import java.math.*; //import java.io.*; import java.util.*; public class POJ2506{public static void main(String[] args){Scanner cin=new Scanner(System.in);BigInteger [] a=new BigInteger[260];int b;a[0]=BigInteger.ONE;a[1]=BigInteger.ONE;for(int i=2;i<=255;++i)a[i]=a[i-1].add(new BigInteger("2").multiply(a[i-2]));while(cin.hasNext()){b=cin.nextInt();System.out.println(a[b]);;}} }
package POJ; import java.math.*; import java.io.*; import java.util.*; public class POj1001{public static void main(String [] args){Scanner cin=new Scanner(System.in);BigDecimal a;int b;while(cin.hasNextBigDecimal()){a=cin.nextBigDecimal();b=cin.nextInt();a=a.pow(b);a=a.stripTrailingZeros();// a=a.toPlainString();String aa=a.toPlainString();//這個(gè)是String中的方法if(aa.startsWith("0."))//判斷是否是0.開頭aa=aa.substring(1);//從第一位開始System.out.println(aa); } } }
總結(jié)
以上是生活随笔為你收集整理的Java大数,高精度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向抽象编程
- 下一篇: Codeforces Round #47