Java大数练习第二弹

hdu1250 水题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1250

import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        int a;
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            a=in.nextInt();
            BigInteger[] num=new BigInteger[10000];
            num[1]=BigInteger.ONE;
            num[2]=BigInteger.ONE;
            num[3]=BigInteger.ONE;
            num[4]=BigInteger.ONE;
            for(int i=5;i<=a;i++){
                
                num[i]=(num[i-1]).add(num[i-2]).add(num[i-3]).add(num[i-4]);
            
            }
            System.out.println(num[a]);
        }
    }
}

hdu1297 递推求解  题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1297


import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        int a;
        BigInteger[] b= new BigInteger[1010];
        b[1]=BigInteger.ONE;
        b[2]=BigInteger.valueOf(2);
        b[3]=BigInteger.valueOf(4);
        b[4]=BigInteger.valueOf(7);
        while(in.hasNext()){
            a=in.nextInt();
            if(a<5)
                System.out.println(b[a]);
            else{
                for(int i=5;i<=a;i++){
                    b[i]=b[i-1].add(b[i-2]).add(b[i-4]);
                }
                System.out.println(b[a]);
            }
        }
        
    }
}


hdu1715 水题 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1715

import java.util.*;
import java.math.BigInteger;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        BigInteger[] b= new BigInteger[1010];
        b[1]=BigInteger.valueOf(1);
        b[2]=BigInteger.valueOf(1);
        for(int i=3;i<=1000;i++){
            b[i]=b[i-1].add(b[i-2]);
        }
        int n=in.nextInt();
        while(n-->0){
            int text=in.nextInt();
            System.out.println(b[text]);
        }
    }
}

hdu1753 高精度小数求和  题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1753

import java.util.*;
import java.math.BigDecimal;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        BigDecimal a,b;
        while(in.hasNext()){
            a=in.nextBigDecimal();
            b=in.nextBigDecimal();
            BigDecimal c=a.add(b);
             String res = c.stripTrailingZeros().toPlainString(); //stripTrailingZeros()去除后面多余的零
                                                                  //toPlainString(),取消科学计数法表示
               System.out.println(res);
        }
    }
}

hdu  1865 找规律 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1865

import java.util.*;
import java.math.*;
public class Main{
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        int a;
        String test;
        a=in.nextInt();
        BigInteger[] num= new BigInteger[210];
        num[1]=BigInteger.ONE;
        num[2]=BigInteger.valueOf(2);
        num[3]=BigInteger.valueOf(3);
        while(a-->0){
            test=in.next();
            int n=test.length();
            if(n<4)
                System.out.println(num[n]);
            else
            {
                for(int i=4;i<=n;i++){
                    num[i]=num[i-1].add(num[i-2]);
                }
                System.out.println(num[n]);
            }
            
        }
    }
}

hdu 2100  进制转换,,方法可能比较麻烦 不过也熟练了许多java的用法。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2100

import java.util.*;
import java.math.*;
public class Main{
    public static BigInteger mpow(int b){ //自己写的求幂函数 
        BigInteger ans=BigInteger.ONE;
        for(int i=0;i<b;i++){
            ans=ans.multiply(BigInteger.valueOf(26));
        }
        return ans;
    }
    public static String change(BigInteger num){
        char[] line=new char[250];
        int cnt=0;
        while(num.compareTo(BigInteger.ZERO)!=0){
            BigInteger a=num.mod(BigInteger.valueOf(26));
            num=num.divide(BigInteger.valueOf(26));
            line[cnt++]=(char)(a.intValue()+'A'); //将 BigInteger转换成int 
        }
        return String.valueOf(line); //将字符数组转换成 String
    }
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        while(in.hasNext()){
            String a,b;
            a=in.next();
            b=in.next();
            BigInteger an=BigInteger.ZERO;
            //System.out.println(a);
            //System.out.println((int)a.charAt(1));
            for(int i=0;i<a.length();i++){
                an=an.add(BigInteger.valueOf(a.charAt(i)-'A').multiply(mpow(a.length()-i-1)));//String 单个字符显示 用 str.charAt(i);
            }  
            BigInteger bn=BigInteger.ZERO;
            for(int i=0;i<b.length();i++){
                bn=bn.add(BigInteger.valueOf(b.charAt(i)-'A').multiply(mpow(b.length()-i-1)));
            }  
            BigInteger c=an.add(bn);
            String fin=change(c);
            for(int i=fin.length()-1;i>=0;i--){
                if(fin.charAt(i)!='\0')
                System.out.print(fin.charAt(i));
            }
            System.out.println();
            
        }
    }
}


posted @ 2015-07-23 10:28  编程菌  阅读(141)  评论(0编辑  收藏  举报