Java大数
转自:https://www.cnblogs.com/zufezzt/p/4794271.html
import java.util.*; import java.math.*; public class Main{ public static void main(String args[]){ Scanner cin = new Scanner(System.in); BigInteger a, b; //以文件EOF结束 while (cin.hasNext()){ a = cin.nextBigInteger(); b = cin.nextBigInteger(); System.out.println(a.add(b)); //大整数加法 System.out.println(a.subtract(b)); //大整数减法 System.out.println(a.multiply(b)); //大整数乘法 System.out.println(a.divide(b)); //大整数除法(取整) System.out.println(a.remainder(b)); //大整数取模 //大整数的比较 if( a.compareTo(b) == 0 ) System.out.println("a == b"); //大整数a==b else if( a.compareTo(b) > 0 ) System.out.println("a > b"); //大整数a>b else if( a.compareTo(b) < 0 ) System.out.println("a < b"); //大整数a<b //大整数绝对值 System.out.println(a.abs()); //大整数a的绝对值 //大整数的幂 int exponent=10; System.out.println(a.pow(exponent)); //大整数a的exponent次幂 //返回大整数十进制的字符串表示 System.out.println(a.toString()); //返回大整数p进制的字符串表示 int p=8; System.out.println(a.toString(p)); } } }
转自:https://blog.csdn.net/morejarphone/article/details/51884888
HDU 1002
a+b大数版
1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main { 5 void solve () { 6 BigInteger a, b, c; 7 Scanner cin = new Scanner(System.in); 8 int t = cin.nextInt (); 9 for (int i = 1; i <= t; i++) { 10 System.out.println ("Case " + i + ":"); 11 a = cin.nextBigInteger (); 12 b = cin.nextBigInteger (); 13 System.out.println (a + " + " + b + " = " + a.add (b)); 14 if (i != t) System.out.println (); 15 } 16 } 17 public static void main (String[] args) { 18 Main work = new Main(); 19 work.solve (); 20 } 21 }
HDU 1042
阶乘大数版
1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main { 5 int maxn = 10005; 6 void solve () { 7 Scanner cin = new Scanner(System.in); 8 int n; 9 while (cin.hasNext()) { 10 n = cin.nextInt (); 11 BigInteger ans = BigInteger.valueOf (1); 12 for (int i = 2; i <= n; i++) { 13 ans = ans.multiply (BigInteger.valueOf (i)); 14 } 15 System.out.println (ans); 16 } 17 } 18 public static void main (String[] args) { 19 Main work = new Main(); 20 work.solve (); 21 } 22 }
HDU 1297
f(n)=f(n−1)+f(n−2)+f(n−4)f(n)=f(n−1)+f(n−2)+f(n−4)
import java.math.*; import java.util.*; public class Main { void solve () { Scanner cin = new Scanner(System.in); BigInteger[] ans = new BigInteger[1001]; ans[1] = BigInteger.valueOf (1); ans[2] = BigInteger.valueOf (2); ans[3] = BigInteger.valueOf (4); ans[4] = BigInteger.valueOf (7); for (int i = 5; i <= 1000; i++) { ans[i] = ans[i-1].add (ans[i-2].add (ans[i-4])); } while (cin.hasNext ()) { int n = cin.nextInt (); System.out.println (ans[n]); } } public static void main (String[] args) { Main work = new Main(); work.solve (); } }
HDU 1753
高精度小数A+B,要去掉末尾的后导0.
import java.math.*; import java.util.*; public class Main { void solve () { //BigInteger a, b, c; Scanner cin = new Scanner(System.in); BigDecimal a = BigDecimal.valueOf (0); BigDecimal b = BigDecimal.valueOf (0); while (cin.hasNext ()) { a = cin.nextBigDecimal (); b = cin.nextBigDecimal (); System.out.println (a.add (b).stripTrailingZeros().toPlainString()); } } public static void main (String[] args) { Main work = new Main(); work.solve (); } }