大数题是最适合用Java 来做了。java.math.BigDecimal; java.math.BigInteger; 提供了很多很实用的方法,对处理大数据有很大的帮助。
杭电上大数题目目前总结如下:
1002 , 1042 ,1047,1063,1297,1316,1715,1753, 2054
HDOJ1047 Integer 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(); } } }
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); } } }
HDOJ1297 Children’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]); } } }
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]); } } }
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); } } }