• 高精度运算——java


    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");
    				}
    			}
    		}
    	}
    }
    

      

     

     

     

  • 相关阅读:
    一个例子讲明爬虫请求库requests
    SpringBoot【六】 Shiro
    SpringBoot【五】 Spring Security
    SpringBoot【四】 任务
    Swagger
    SpringBoot【三】 整合 JDBC、Druid、MyBatis
    SpringBoot【二】 SpringBoot 配置
    SpringBoot【一】入门程序及原理分析
    SpingBoot 相关问题:启动 web 项目之后出现 java.lang.UnsatisfiedLinkError: D:Tomcatapache-tomcat-9.0.36in cnative-1.dll
    SpringBoot 相关问题:IDEA 创建 SpringBoot 项目时出现 Initialization failed for 'https://start.spring.io' 问题
  • 原文地址:https://www.cnblogs.com/chengsheng/p/4705193.html
Copyright © 2020-2023  润新知