(专题)用Java 轻松AC掉HDOJ大数题

大数题是最适合用Java 来做了。java.math.BigDecimal; java.math.BigInteger; 提供了很多很实用的方法,对处理大数据有很大的帮助。

杭电上大数题目目前总结如下:

1002,1042,1047,1063,1297,1316,1715,1753,2054


HDOJ1047Integer InquiryInteger Inquiry



import java.util.Scanner;
import java.math.BigInteger;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
        int n;
        BigInteger m,sum;
        	n=scanner.nextInt();
        	for(int i=1;i<=n;i++){
        		sum=BigInteger.ZERO;
        		while(scanner.hasNextBigInteger()){
        			m=scanner.nextBigInteger();
        			if(m.equals(BigInteger.ZERO))
        			//if(m.intValue()==0)
        				break;
        			sum=sum.add(m);
        		}
        		System.out.println(sum);
        		if(i<n)
        			System.out.println();
        	}
        }

}

HDOJ1063Exponentiation


import java.util.Scanner;
import java.math.*;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		//float a;
		int n;
		BigDecimal a,r;
		while(scanner.hasNextFloat()){
			a=scanner.nextBigDecimal();
			n=scanner.nextInt();
			r=BigDecimal.ONE;
			for(int i=1;i<=n;i++)
				r=r.multiply(a);
			String s=r.stripTrailingZeros().toPlainString();
			if(s.charAt(0)=='0')
				System.out.println(s.substring(1));
			else
				System.out.println(s);
		}
		
	}

}


HDOJ1297Children’s Queue


import java.util.Scanner;
import java.math.BigInteger;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n;
		BigInteger []r=new BigInteger[1005];
		r[1]=BigInteger.valueOf(1);
		r[2]=BigInteger.valueOf(2);
		r[3]=BigInteger.valueOf(4);
		r[4]=BigInteger.valueOf(7);
		for(int i=5;i<=1000;i++)
			r[i]=r[i-1].add(r[i-2]).add(r[i-4]);
		
		while(scanner.hasNextInt()){
			n=scanner.nextInt();
			System.out.println(r[n]);		
		}
	}

}

HDOJ1316How Many Fibs?


import java.util.Scanner;
import java.math.BigInteger;

public class Main{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int count;
		BigInteger a,b;
		BigInteger []r=new BigInteger[1005];
		r[1]=BigInteger.valueOf(1);
		r[2]=BigInteger.valueOf(2);
		for(int i=3;i<=1000;i++)
			r[i]=r[i-1].add(r[i-2]);
		while(scanner.hasNextBigInteger()){
			a=scanner.nextBigInteger();
			b=scanner.nextBigInteger();
			if(a.equals(BigInteger.valueOf(0))&&b.equals(BigInteger.valueOf(0)))
				return;
			count=0;
			for(int j=1;j<=1000;j++){
				if(r[j].compareTo(a)>=0&&r[j].compareTo(b)<=0)
					count++;
			}
			System.out.println(count);
		}
	}

}


HDOJ1715大菲波数


import java.util.Scanner;
import java.math.BigInteger;

public class Main{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		BigInteger []a=new BigInteger[1005];
		a[1]=a[2]=BigInteger.valueOf(1);
		for(int j=3;j<=1000;j++){
			a[j]=a[j-1].add(a[j-2]);
		}
		int n,m;
		n=scanner.nextInt();
		for(int i=1;i<=n;i++){
			m=scanner.nextInt();
			System.out.println(a[m]);
		}
	}

}

HDOJ1753 大明A+B


import java.util.Scanner;
import java.math.*;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		BigDecimal a,b;
		while(scanner.hasNextBigDecimal()){
			a=scanner.nextBigDecimal();
			b=scanner.nextBigDecimal();
			a=a.add(b);
			String s=a.stripTrailingZeros().toPlainString();
			System.out.println(s);
		}
	}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值