JAVA 大数在acm中的应用(2)

来源:互联网 发布:网络经常被攻击 编辑:程序博客网 时间:2024/06/15 00:42


对于java大数,前面已经提到过一些基本的使用方法,现在补充前面感觉遗漏掉的东西



对于一个变量的定义与在C语言中一样;

如果下次还需要输入  它 (例如  n)  则需要:

import java.util.*;import java.math.*;public class Main {public static void main (String[] args){Scanner cin = new Scanner(System.in);int n;while(cin.hasNextInt()) //与C语言中多组数据输入一样        {            n=cin.nextInt();//多次输入n值            ...            ...        }}}


对于 高精度的大数:(BigDecimal


其基本用法与BigInteger 一样


关于高精度的常用表示:

去后导0的用地BigDecimal的stripTrailingZeros,然后使用toPlainString防止高精度数表示成科学计数法(意思就是转换成朴素的字符串)string


例如如果ans是经过多个高精度数字运算后的结果,那么它有可能会被自动保存为科学计数法;此时用toPlainString就可以。

在此之前要先去掉多余的0,即用到stripTrailingZeros,其实此步骤可以在转换为字符串之后再对其(ff)逐个进行操作。

string ff=ans.stripTrailingZeros().toPlainString() ;


顺便提一下大数中对String的操作:


定义:

String ff="1234abcd";

ff.函数名();


常用的函数名:

1) int length():获取长度     2)char charAt(int index)   例如 char ch=ff.charAt(2);  则ch=='3';

3) boolean contains(str);  判断是否包含一个子串     3) boolean isEmpty():原理就是判断长度是否为0。

5)String toUpperCsae() 大转小     String toLowerCsae() 小转大 :将字符串转成大写或小写 

6) int compareTo(string); 两个字符串之间的比较



好的,回归正题,下面继续说说java的log 与pow

一般可以用数学包里的来解决

例如 Math.pow(double,double);

       Math.log(double a) 返回(以e为底)的一个double值。


好吧,就这么多吧~~~


0 0
原创粉丝点击