ACM之Java速成(3)
ACM中Java.大数处理
先上个代码:
import java.math.*;
import java.util.*;
class Main{
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
BigInteger a,b,t;
b=BigInteger.valueOf();
t=BigInteger.valueOf();
while(cin.hasNext())
{
a=cin.nextBigInteger();
if(a.compareTo(t)==)break;
if(a.mod(b).compareTo(t)==)
{
System.out.println("");
}
else System.out.println("");
}
}
}
BigInteger和BigDecimal可以说是acmer选择java的首要原因。
函数:add, subtract, divide, mod, compareTo等,其中加减乘除模都要求是BigInteger(BigDecimal)和BigInteger(BigDecimal)之间的运算,所以需要把int(double)类型转换为BigInteger(BigDecimal),用函数BigInteger.valueOf().
BigInteger
主要API
将字符串转换成BigInteger
BigInteger(String val)
将 BigInteger 的十进制字符串表示形式转换为 BigInteger。
BigInteger(String val, int radix)
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。
BigInteger的加法
BigInteger
add(BigInteger val)
返回其值为 (this + val) 的 BigInteger。
BigInteger
and(BigInteger val)
返回其值为 (this & val) 的 BigInteger。
BigInteger的减法
BigInteger
subtract(BigInteger val)
返回其值为 (this - val) 的 BigInteger。
BigInteger的乘法
BigInteger
multiply(BigInteger val)
返回其值为 (this * val) 的 BigInteger。
大数求余:
BigInteger
mod(BigInteger m)
返回其值为 (this mod m) 的 BigInteger。
大数除法
BigInteger
divide(BigInteger val)
返回其值为 (this / val) 的 BigInteger。
其他一些
BigInteger
gcd(BigInteger val)
返回一个 BigInteger,其值是 abs(this) 和 abs(val) 的最大公约数。
BigInteger
max(BigInteger val)
返回此 BigInteger 和 val 的最大值。
BigInteger
min(BigInteger val)
返回此 BigInteger 和 val 的最小值。
BigDecimal类
主要API:
将字符串转换成BigDecimal
BigDecimal(String val)
将 BigDecimal 的字符串表示形式转换为 BigDecimal。
BigDecimal(String val, MathContext mc)
将 BigDecimal 的字符串表示形式转换为 BigDecimal,接受与 BigDecimal(String) 构造方法相同的字符串(按照上下文设置进行舍入)。
两个BigDecimal的相加
BigDecimal
add(BigDecimal augend)
返回一个 BigDecimal,其值为 (this + augend),其标度为 max(this.scale(), augend.scale())。
BigDecimal
add(BigDecimal augend, MathContext mc)
返回其值为 (this + augend) 的 BigDecimal(根据上下文设置进行舍入)。
两个BigDecimal的相减
BigDecimal
subtract(BigDecimal subtrahend)
返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。
BigDecimal
subtract(BigDecimal subtrahend, MathContext mc)
返回其值为 (this - subtrahend) 的 BigDecimal(根据上下文设置进行舍入)。
两个BigDecimal的相除:
BigDecimal
divide(BigDecimal divisor)
返回一个 BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() - divisor.scale());如果无法表示准确的商值(因为它有无穷的十进制扩展),则抛出 ArithmeticException。
BigDecimal
divide(BigDecimal divisor, int roundingMode)
返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。
BigDecimal
divide(BigDecimal divisor, int scale, int roundingMode)
返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。
BigDecimal
divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。
BigDecimal
divide(BigDecimal divisor, MathContext mc)
返回其值为 (this / divisor) 的 BigDecimal(根据上下文设置进行舍入)。
BigDecimal
divide(BigDecimal divisor, RoundingMode roundingMode)
返回一个 BigDecimal,其值为 (this / divisor),其标度为 this.scale()。
计算BigDecimal的N次幂
BigDecimal
pow(int n)
返回其值为 (thisn) 的 BigDecimal,准确计算该幂,使其具有无限精度。
BigDecimal
pow(int n, MathContext mc)
返回其值为 (thisn) 的 BigDecimal。
有关转换成字符串的方法
String
toEngineeringString()
返回此 BigDecimal 的字符串表示形式,需要指数时,则使用工程计数法。
String
toPlainString()
返回不带指数字段的此 BigDecimal 的字符串表示形式。
String
toString()
返回此 BigDecimal 的字符串表示形式,如果需要指数,则使用科学记数法。
大数相除:
import java.math.*;
import java.util.*;
class Main{
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
BigInteger a,b,t;
b=BigInteger.valueOf();
t=BigInteger.valueOf();
while(cin.hasNext())
{
a=cin.nextBigInteger();
if(a.compareTo(t)==)break;
if(a.mod(b).compareTo(t)==)
{
System.out.println("");
}
else System.out.println("");
}
}
}
A+B problem IV
import java.math.*;
import java.util.*;
class Main{
public static void main(String args[]){
Scanner cin=new Scanner(System.in);
BigDecimal a,b,s,t;
t=BigDecimal.valueOf();
while(cin.hasNext())
{
a=cin.nextBigDecimal();
b=cin.nextBigDecimal(); if(a.compareTo(t)==&&b.compareTo(t)==)
System.out.println("");
else
{
s=a.add(b);
System.out.println(s.stripTrailingZeros().toPlainString());
}
}
}
}
高精度求幂
//高精度求幂
import java.util.*;
import java.io.*;
import java.math.*; public class Main {
public static void main(String[] arg){
Scanner cin=new Scanner(new BufferedInputStream(System.in));
BigDecimal a;
for(;cin.hasNext();)
{
a=cin.nextBigDecimal();
a=a.pow(cin.nextInt()).stripTrailingZeros();
System.out.println(a.toPlainString().replaceAll("^0", ""));
}
}
}
未完待续,,,
ACM之Java速成(3)的更多相关文章
- ACM之Java速成(4)
ACM中Java.进制转换 Java进制转换: 由于Unicode兼容ASCII(0-255),因此,上面得到的Unicode就是ASCII. java中进行二进制,八进制,十六进制,十进制间进行相互 ...
- ACM之Java速成(2)
acm中Java的应用 Chapter I. Java的优缺点各种书上都有,这里只说说用Java做ACM-ICPC的特点: (1) 最明显的好处是,学会Java,可以参加Java Challenge ...
- ACM之Java速成(1)
这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner cin = new Sc ...
- 【转】Acm之java速成
这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入:格式为:Scanner cin = new Sca ...
- ACM中java的使用
ACM中java的使用 转载自http://www.cnblogs.com/XBWer/archive/2012/06/24/2560532.html 这里指的java速成,只限于java语法,包括输 ...
- ACM中java的使用 (转)
ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...
- 极·Java速成教程 - (1)
序言 众所周知,程序员需要快速学习新知识,所以就有了<21天精通C++>和<MySQL-从删库到跑路>这样的书籍,Java作为更"高级"的语言也不应该落后, ...
- ACM之Java输入输出
本文转自:ACM之Java输入输出 一.Java之ACM注意点 1. 类名称必须采用public class Main方式命名 2. 在有些OJ系统上,即便是输出的末尾多了一个“ ”,程序可能会输出错 ...
- 极*Java速成教程 - (1)
序言 众所周知,程序员需要快速学习新知识,所以就有了<21天精通C++>和<MySQL-从删库到跑路>这样的书籍,Java作为更"高级"的语言也不应该落后, ...
随机推荐
- 接口测试从未如此简单 - Postman (Chrome插件)【转】
一个非常有力的Http Client工具用来测试Web服务的, 我这里来介绍如何用它测试restful web service 注:转载请注明出处http://www.cnblogs.com/wade ...
- nrf51822-主从通信分析1
建议看该教程前,先看一下 简单扫描器实现 教程 讲解基于sdk目录下central中的两个例子. 关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架. Main函数中完成初始化, 从机 ...
- 12 Most Useful Google Chrome Browser chrome:// Commands
1. chrome://flags 2. chrome://memory 3. chrome://about 4:chrome://net-internals 5:chrome://webrtc-in ...
- Magento订单打印(pdf格式)
Magento自身包含有:打印发票单,打印装箱单,打印退款单.这些都是基于西方国家的习惯来布置的.公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成.刚接到这个任务时,觉得头大,因为对于PH ...
- CENTOS安装vnc
先直接进入命令模式,如果是服务器则可以使用putty连接进入命令行模式. 现在知道的centos下的vnc是:tigervnc,由于是服务端所以我们只安装tigervnc-server即可: yum ...
- C#中jQuery Ajax实例(二)
上一篇写了一个简单的Ajax异步程序,这一次同样是简单的程序,只不过这次先把参数传到一般处理程序(后缀为ashx)中,再把结果传回到页面. 1.html代码: <html xmlns=" ...
- MVC4怎么设置@Html.TextBoxFor这样的输入框的css样式
在传统webForm中,输入框的这样的: <input id="userName" name="userName" type="text&quo ...
- windows下memcache安装及配置
1.安装memcached服务,链接为http://i.cnblogs.com/Files.aspx, 下载解压后放在一个文件夹下,在开始搜索中输入cmd, 进入cmd黑框,cd 路径,进入memca ...
- NSUserDefaults的小封装
//保存 -(void)saveToUserDefaults:(NSString*)tosaveedString withKey:(NSString *)tosaveedKey { NSUserDe ...
- ucenter 整合同步登录的内部实现原理及thinkphp整合ucenter
1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证.2.如果验证成功,将调用位于 ...