acm基础JAVA实现,Java学习之ACM中使用大数类的基础方法及入门教程

ACM中的大数问题用Java的大数类敲方便快捷,而且极其容易上手!!!

本节针对java的大数类在ACM中的用法做简单的讲解。

如对Java中的一些基础用法不了解的去前一节看看~

http://blog.csdn.net/why850901938/article/details/51050735

资料均注明来源,侵删!

1.简介:

Java中两个类BigDecimal(表示浮点数)和BigInteger(表示整数);

分别表示不可变的任意精度的整数和不可变的有符号的任意精度的十进制数(浮点数)。

主要用于高精度计算中。这两个类使得java中的大数,高精度运算变得很简单。

使用时注意每个单词首字母大写~新手很容易犯这个错/(ㄒoㄒ)/~~

使用这两个类的时候需要加上包 import java.math.*;

或是直接打:

import java.math.BigInteger;

import java.math.BigDecimal;

2.声明与赋值

通常以这种方法声明:

BigInteger a;

BigDecimal b;

也可将声明和赋值写在一起:

BigDecimal a=new BigDecimal("0");

还有常用的常量赋值方法:

A=BigInteger.ONE//=1

B=BigInteger.TEN//=10

C=BigInteger.ZERO//=0

相当于:

BigInteger A = BigInteger.valueOf(1);

BigInteger B = BigInteger.valueOf(10);

BigInteger C = BigInteger.valueOf(0);

valueOf(),可将数据转换为指定类型:

具体用法如下;

int a = 3;

BigInteger b = BigInteger.valueOf(a);

//即b = 3;(int)

2.输入方法:

主要是Scanner类,具体参见上一节内容http://blog.csdn.net/why850901938/article/details/51050735

不在此赘述了;

例:

while(cin.hasNext()) //等同于!=EOF

{

int n;

BigInteger m;

n=cin.nextInt(); //读入一个int;

m=cin.BigInteger();//读入一个BigInteger;

System.out.print(m.toString());

System.out.print(m);

}

例引: http://m.2cto.com/kf/201312/265886.html

3.一些基础运算:

add();//

substract(); //减法

multiply(); //乘法

divided(); //相除取整

remainder(); //取余

pow(); //a.pow(b) = a ^ b

gcd(); //最大公约数

abs(); //绝对

negate(); //取反数

mod(); //a.mod(b) = a % b = a.remainder(b)

max(); min();

compareTo(); //比较

equals(); //比较是否相等

a+b的例子:

import java.math.BigInteger;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

BigInteger a, b;

int T;

Scanner in = new Scanner(System.in);

T = in.nextInt();

for (int i = 1; i <= T; ++i) {

System.out.println("Case" + " " + i + ":");

a = in.nextBigInteger();

b = in.nextBigInteger();

if (i < T) {

System.out.println(a + " + " + b + " = " + a.add(b) );

System.out.println();

} else {

System.out.println(a + " + " + b + " = " + a.add(b));

}

}

}

}

a+b浮点数的例子:

import java.util.*;

import java.math.*;

public class Main{

public static void main(String []args){

BigDecimal a;

BigDecimal b;

a=new BigDecimal("0");

b=new BigDecimal("0");

Scanner cin=new Scanner(System.in);

while(cin.hasNext())

{

a=cin.nextBigDecimal();

b=cin.nextBigDecimal();

a=a.add(b);

String str=a.stripTrailingZeros().toPlainString();

//stripTrailingZeros()这个方法是用来去掉末尾的0的。

//toPlainString()这个方法是使字符串大数变成普通的数字字符组成的字符串,

//如果不使用这个方法很可能数字变成了科学计数法,带E的那种。

System.out.println(str);

}

}

}

注意注释中所提到的两个说明!!!

Java大数的一些基础用法就是这些,下面还有几篇典型例题。

仅代表个人观点,欢迎交流探讨,勿喷~~~

859f786f8581d76d06386893e209cf3f.png

PhotoBy:WLOP

http://weibo.com/wlop

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值