HDU 1002 大数加减
import java.util.*; import java.math.*; import java.io.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); int t=cin.nextInt(); for(int i=1;i<=t;i++) { BigInteger a=cin.nextBigInteger(); BigInteger b=cin.nextBigInteger(); BigInteger c=a.add(b); System.out.println("Case "+i+":"); System.out.println(a+" + "+b+" = "+c); if(i!=t) System.out.println(""); } } }
HDU 1042 大数相乘
import java.util.*; import java.math.*; import java.io.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger n,i,sum; while(cin.hasNextBigInteger()) { n=cin.nextBigInteger(); sum=BigInteger.ONE; i=BigInteger.valueOf(2); while(i.compareTo(n)<=0) { sum=sum.multiply(i); i=i.add(BigInteger.ONE); } System.out.println(sum); } } }
HDU 1047 大数相乘
import java.util.*; import java.math.*; import java.io.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); while(cin.hasNextBigInteger()) { int t=cin.nextInt(); while(t-->0) { boolean flag=true; BigInteger sum=BigInteger.ZERO; while(flag) { BigInteger a=cin.nextBigInteger(); if(a.compareTo(BigInteger.ZERO)==0) flag=false; else sum=sum.add(a); } System.out.println(sum); if(t!=0) System.out.println(""); } } } }
HDU 1063 大数幂与大数转换成字符串的处理
import java.util.*; import java.math.*; import java.io.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); while(cin.hasNextBigDecimal()) { BigDecimal p=cin.nextBigDecimal(); int n=cin.nextInt(); p=p.pow(n); p=p.stripTrailingZeros(); //去掉后倒0 String s=p.toPlainString(); //不让其变成科学计数法的表示法,变成一般的小数表示 if(s.startsWith("0.")) s=s.substring(1); //与前导的字符串比较 System.out.println(s); } } }
HDU 1753 与上一题一样,去掉后导0,然后如果小于1,把前导0也去掉。
import java.util.*; import java.math.*; import java.io.*; public class Main { public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigDecimal a,b; while(cin.hasNextBigDecimal()) { a=cin.nextBigDecimal(); b=cin.nextBigDecimal(); a=a.add(b); a=a.stripTrailingZeros(); String str=a.toPlainString(); if(str.startsWith("0.")) str=str.substring(1); System.out.println(str); } } }
HDU 1316 大数递推+函数判断
import java.util.*; import java.math.*; import java.io.*; public class Main { public static BigInteger []f=new BigInteger[610]; public static int index(BigInteger c,int flag) { if(flag==1) { for(int i=1;i<600;i++) if(f[i].compareTo(c)>=0) return i; } else { for(int i=1;i<600;i++) if(f[i].compareTo(c)>0) return i; } return 0; } public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger a,b; f[1]=BigInteger.ONE;f[2]=BigInteger.valueOf(2); for(int i=3;i<601;i++) f[i]=f[i-2].add(f[i-1]); while(cin.hasNextBigInteger()) { a=cin.nextBigInteger(); b=cin.nextBigInteger(); if(a.equals(b)&&a.equals(BigInteger.ZERO)) break; int i=index(a,1); int j=index(b,0); System.out.println(j-i); } } }
HDU 1715 比上一题容易
import java.util.*; import java.math.*; import java.io.*; public class Main { public static BigInteger []f=new BigInteger[1010]; public static void main(String args[]) { Scanner cin = new Scanner(System.in); BigInteger a,b; f[1]=BigInteger.ONE;f[2]=BigInteger.ONE; for(int i=3;i<1001;i++) f[i]=f[i-2].add(f[i-1]); int n=cin.nextInt(); while(n-->0) { int p=cin.nextInt(); System.out.println(f[p]); } } }
HDU 1250 java大数相加递推
import java.util.*; import java.math.*; import java.io.*; public class Main { private static BigInteger []f=new BigInteger[10005]; public static void main(String args[]) { Scanner cin = new Scanner(System.in); for(int i=1;i<5;i++) f[i]=BigInteger.ONE; for(int i=5;i<1000;i++) f[i]=f[i-4].add(f[i-3].add(f[i-2].add(f[i-1]))); while(cin.hasNextInt()) { int i=cin.nextInt(); System.out.println(f[i]); } } }
HDU 1297 大数相加与找规律
import java.util.*; import java.math.*; import java.io.*; public class Main { private static BigInteger []f=new BigInteger[1005]; public static void main(String args[]) { Scanner cin = new Scanner(System.in); f[1]=BigInteger.ONE; f[2]=BigInteger.valueOf(2); f[3]=BigInteger.valueOf(4); f[4]=BigInteger.valueOf(7); for(int i=5;i<1005;i++) f[i]=f[i-4].add(f[i-2].add(f[i-1])); while(cin.hasNextInt()) { int i=cin.nextInt(); System.out.println(f[i]); } } }
HDU 4919 多校第五场 大数+记忆化递归
import java.util.*; import java.math.*; import java.io.*; public class Main { private static BigInteger one=BigInteger.ONE; private static BigInteger two=BigInteger.valueOf(2); private static BigInteger three=BigInteger.valueOf(3); private static BigInteger four=BigInteger.valueOf(4); private static BigInteger six=BigInteger.valueOf(6); private static HashMap<BigInteger,BigInteger> map=new HashMap<BigInteger,BigInteger>(); public static BigInteger dfs(BigInteger n) { if(n.equals(two)) return BigInteger.ZERO; if(n.equals(three)) return six; if(n.equals(four)) return four; if(map.containsKey(n)) return map.get(n); BigInteger ans,k=n.divide(two); if(n.mod(two).equals(one)) ans=four.multiply(dfs(k)).add(six.multiply(k)); else ans=two.multiply(dfs(k)).add(two.multiply(dfs(k.subtract(one)))).add(four.multiply(k)).subtract(four); map.put(n,ans); return ans; } public static void main(String args[]) { Scanner cin = new Scanner(System.in); while(cin.hasNextBigInteger()) { BigInteger n=cin.nextBigInteger(); System.out.println(dfs(n)); } } }