java大法
java的框架。
import java.io.*; import java.util.*; import java.math.*; public class Main{ public static void main(String []args){ Scanner cin=new Scanner(System.in); } }
import的作用:简单的说就是导入,java有很多方法你可以直接使用,但是被封装在各个包(类)里面,你需要先导包,才能使用这个包里的方法。
*的作用:表示该包中的所有类,*是通配符。
import java.io*;表示引入java.io包里的所有类。
import java.util*;导入包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)。其实不用太理解,只需要知道这个跟C/C++中的头文件一样都要加上。
import java.math.*;表示导入跟数学计算相关的所有类。其中含有BigInteger和BigDecimal这两个非常好用的类,分别处理超长整数和超长浮点数。
http://acm.hdu.edu.cn/showproblem.php?pid=1753
import java.io.*; import java.math.*; import java.util.Scanner; import java.util.*; public class Main {//类名。需要用Main,因为OJ判题会找这个类名 public static void main(String [] args){//这个跟C/C++中的main函数一样 BigDecimal a,b; //用超长浮点类创建a、b两个对象 a=new BigDecimal ("0");//调用以String为参数的构造方法 b=new BigDecimal ("0"); Scanner in =new Scanner (System.in);//Scanner类创建in对象在控制台进行数据输入 while(in.hasNext()){//hasNext方法返回bool类型,用以多组数据输入 a=in.nextBigDecimal();//调用in对象的方法,将值赋给a对象 b=in.nextBigDecimal(); System.out.println(a.add(b).stripTrailingZeros().toPlainString()); //System.out.print()跟上面的差别是最后没有换行 //stripTrailingZeros()方法的作用是忽略后导零 //toPlainString()方法的作用是返回不带指数字段的字符串表示形式 } } }
http://acm.hdu.edu.cn/showproblem.php?pid=1002 加法
import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String []args){ Scanner cin = new Scanner (System.in); int t,cnt=0; t=cin.nextInt(); BigInteger a,b; while(cnt<t){ //T组数据输入 cnt++; a=cin.nextBigInteger(); b=cin.nextBigInteger(); System.out.println("Case"+" "+cnt +":"); if(cnt<t){ System.out.println(a+" + "+b+" = "+a.add(b)); System.out.println(); }else{ System.out.println(a+" + "+b+" = "+a.add(b)); } } } }
http://acm.hdu.edu.cn/showproblem.php?pid=1042 阶乘
import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String []args){ Scanner cin = new Scanner (System.in); BigInteger ans; BigInteger one = new BigInteger ( "1" );//对象one 用来赋初值 while(cin.hasNext()){ int n=cin.nextInt(); ans=one; for(int i=2;i<=n;i++){ ans=ans.multiply(BigInteger.valueOf(i)); } System.out.println(ans); } } }
http://acm.hdu.edu.cn/showproblem.php?pid=1047
import java.util.*; import java.math.*; public class Main { public static void main(String [] args){ Scanner in = new Scanner(System.in); int i,n; BigInteger a,ans; n=in.nextInt(); for( i=0; i<n;i++ ){ ans=BigInteger.valueOf(0);//用0赋初值 while(in.hasNext()){ a=in.nextBigInteger(); if(a.equals(BigInteger.ZERO)){//equal返回bool类型。如果相等则ture。 break; } ans=ans.add(a); } System.out.println(ans); if(i!=n-1) System.out.println(); } //in.close(); } }
http://acm.hdu.edu.cn/showproblem.php?pid=1063 浮点数的次方
import java.io.*; import java.util.*; import java.math.*; public class Main{ public static void main(String [] args){ Scanner cin = new Scanner(System.in); while(cin.hasNext()){ BigDecimal a= cin.nextBigDecimal(); int n=cin.nextInt(); String ans=a.pow(n).stripTrailingZeros().toPlainString(); //pow直接计算a的n次方 if(ans.startsWith("0")){ //如果该对象是以0开头的 ans=ans.substring(1); //截取从指定索引处的字符开始到串尾 } System.out.println(ans); } } }
http://acm.hdu.edu.cn/showproblem.php?pid=1316 斐波那契数列
import java.io.*; import java.util.*; import java.math.*; public class Main{ public static void main(String []args){ BigInteger f[]=new BigInteger [505]; //创建对象数组 BigInteger zero = new BigInteger("0"); f[1]=new BigInteger("1"); //实例化对象 f[2]=new BigInteger("2"); for(int i=3;i<=501;i++){ f[i]=f[i-1].add( f[i-2] ); } Scanner cin= new Scanner(System.in); BigInteger a,b; int i,k; while(cin.hasNext()){ a=cin.nextBigInteger(); b=cin.nextBigInteger(); if(a.equals(zero)&&b.equals(zero)){ //同时为零 break; } for( i=1,k=0;i<=500;i++){ if(a.compareTo(f[i])<=0 && b.compareTo(f[i])>=0 ){ //a.compareTo(b)方法a如果大于b,则返回1;如果相等,返回0;如果a小于b,返回-1 k++; } if( b.compareTo(f[i])<0 ) break; } System.out.println(k); } } }
http://acm.hdu.edu.cn/showproblem.php?pid=2075 取余
import java.io.*; import java.util.*; import java.math.*; public class Main{ public static void main(String []args){ Scanner cin= new Scanner (System.in); int n=cin.nextInt(); BigInteger a,b,c; for(int i=0;i<n;i++){ a=cin.nextBigInteger(); b=cin.nextBigInteger(); if(!b.equals(BigInteger.ZERO)){ c=a.mod(b); //c=a%b if(c.equals(BigInteger.ZERO)){ System.out.println("YES"); }else{ System.out.println("NO"); } } } } }
http://acm.hdu.edu.cn/showproblem.php?pid=5429 判断是否为等比数列(可能有浮点数)
import java.io.*; import java.util.*; import java.math.*; public class Main{ public static void main(String [] args){ BigDecimal f[]=new BigDecimal [120]; Scanner cin = new Scanner (System.in); BigDecimal Zero = BigDecimal.ZERO; int t,cnt=0,n; t = cin.nextInt(); while(cnt<t){ cnt++; n = cin.nextInt(); int flag=0; for(int i=0;i<n;i++){ f[i] = cin.nextBigDecimal(); if( f[i].compareTo(Zero) == 0 ){ flag++; } } if(flag!=0){ if(flag!=n){ System.out.println("No"); }else{ System.out.println("Yes"); } continue; } if(n<=2){ System.out.println("Yes"); }else{ BigDecimal a,b,c; int i; for(i=2;i<n;i++){ c=f[i];b=f[i-1];a=f[i-2]; if( a.multiply(c).compareTo(b.multiply(b))!=0 ){ System.out.println("No"); break; } } if(i==n){ System.out.println("Yes"); } } } } }