刚学了点JAVA大数类,找几个大数的题目先练练手。
http://acm.nyist.net/JudgeOnline/status.php?pid=28
大数阶乘
import java.io.*; import java.util.*; import java.math.*; import java.math.BigInteger; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (System.in); while(cin.hasNext()) { int m = cin.nextInt(); BigInteger sum = BigInteger.ONE; for(int i = 2; i <= m; i++) { sum = sum.multiply(BigInteger.valueOf(i)); } System.out.println(sum); } } }
http://acm.nyist.net/JudgeOnline/problem.php?pid=45
import java.math.BigInteger; import java.util.*; import java.io.*; public class Main{ public static void main(String[] args) { int test; Scanner cin = new Scanner (System.in); test = cin.nextInt(); while(test-- > 0) //搞不懂为啥不加 >0 就编译错误 { BigInteger sum = BigInteger.ONE; int n = cin.nextInt(); for(int i = 1; i <= n; i++) { sum = sum.multiply(BigInteger.valueOf(4)); } System.out.println( sum.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(3)) ); } } }
http://acm.nyist.net/JudgeOnline/problem.php?pid=73
大数比较
import java.math.BigInteger; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (System.in); while(cin.hasNext()) { BigInteger a = cin.nextBigInteger(); BigInteger b = cin.nextBigInteger(); if(a.equals(BigInteger.ZERO) && b.equals(BigInteger.ZERO)) break; int f = a.compareTo(b); if(f == -1) System.out.println("a<b"); else if(f==0) System.out.println("a==b"); else System.out.println("a>b"); } } }
http://acm.nyist.net/JudgeOnline/problem.php?pid=103
大数加法
import java.math.BigInteger; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) { int test; Scanner cin = new Scanner (System.in); test = cin.nextInt(); for(int item = 1; item <= test; item++) { BigInteger a = cin.nextBigInteger(); BigInteger b = cin.nextBigInteger(); System.out.println("Case " + item + ":"); System.out.println(a+ " + " + b + " = " + a.add(b)); // 输出格式 } } }
递推
import java.math.BigInteger; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (System.in); while(cin.hasNext()) { BigInteger [] a = new BigInteger [101]; for(int i = 0; i <= 2; i++) { a[i] = cin.nextBigInteger(); } for(int i = 3; i <= 99; i++) { a[i] = a[i-1].add(a[i-2]).add(a[i-3]); } System.out.println(a[99]); } } }
高精度求幂
import java.math.BigInteger; import java.math.BigDecimal; import java.util.*; import java.io.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner (System.in); while(cin.hasNext()) { BigDecimal ans = cin.nextBigDecimal(); int n = cin.nextInt(); ans = ans.pow(n); //求幂 ans = ans.stripTrailingZeros();//整数去掉小数点和后面的零 String res = ans.toPlainString();//科学计数法 if(res.startsWith("0"))//去掉前导0 { res = res.substring(1); } System.out.println(res); } } }