java大数专题

来源:互联网 发布:unity3d圣典中文手册 编辑:程序博客网 时间:2024/06/09 14:39

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(); //去掉后倒0String 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));}}}




0 0
原创粉丝点击