码迷,mamicode.com
首页 > 编程语言 > 详细

高精度运算——java

时间:2015-08-05 17:41:24      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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

  

 

高精度运算——java

标签:

原文地址:http://www.cnblogs.com/chengsheng/p/4705193.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!