您的位置:首页 > 编程语言 > Java开发

Java在ACM中的应用

2016-08-19 22:22 337 查看

头文件

import Java.io.*;

import java.util.*;→import java.util.Scanner;

import java.math.*;→import java.math.BigInteger;

输入

Scanner cin = Scanner (System.in);

while(cin.hasNext())//等价于!=EOF,hasNext只返回true或者false来控制

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

b=input.nextDouble(); //读入一个double的数

String c=input.next();//识别空格和回车  

String str=input.nextLine();//会读入空格和回车

n=cin.nextBigInteger();//读入一个大整数

N=cin.nextBigDecimal();//读入高精度浮点数

 

输出

System.out.printf("%d\n",n);//也可以类似c里的输出方式

 

BigInteger

 

初始化:BigInteger bigInteger = new BigInteger("1");//直接创建大整数并赋值

 

BigInteger中的0,1,10

A=BigInteger.ONE

B=BigInteger.TEN

C=BigInteger.ZERO

 

int和BigInteger的转换

int b = a.intValue(); //将大整数a转为int型b

intValue,longValue,floatValue,doubleValue://把该数转换为该类型的数的值。

将int型的数赋值给BigInteger:BigInteger.valueOf(k);//将int
k转化为BigInteger

 

基本的函数:

add:+ a.add(b);

subtract:-

multiply:*

divide:/

pow:a.pow(b)=a^b,b是int型

mod:a.mod(b)=a%b; a,b都是BigInteger

and:等同于c++的位&;

or:等同于c++的位|

xor: 异或,BigInteger xor(BigInteger val)

not:!,非;

shiftLeft:左移,this << n ,this*2^n;
shiftRight:右移,this >> n
gcd,abs:公约数,绝对值  a.abs();  a.gcd(b)

compareTo:根据该数值是小于、等于、或大于 val返回-1、0或1;

equals:判断两数是否相等,也可以用compareTo来代替

min,max:取两个数的较小、大者;

进制转换

String str="FF";

实现x进制转换十进制(这里x为2,x可以为8,16):

BigInteger a=input.nextBigInteger();//输入一个2进制数

BigInteger b=new BigInteger(a.toString(),2);//利用2进制法则转化为10进制存入b

System.out.println(b.toString(2));//将b(必须为10进制)转化为2进制存入字符串

BigDecimal

stripTrailingZeros() ,返回类型为BigDecimal除去与数值无关的多余0的数值。

BigDecimal类有3个toString方法,分别是toEngineeringString、toPlainString和toString,从BigDecimal的注释中可以看到这3个方法的区别:

 

toEngineeringString:有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学技术法类似,但要求10的幂必须是3的倍数。

 

toPlainString:不使用任何指数

toString:有必要时使用科学计数法

 

 不使用指数 科学记数法工程记数法

2700 2.7 × 10³ 2.7 × 10³

27000 2.7 × 10⁴ 27 × 10³

270000 2.7 × 10⁵ 270 × 10³

2700000 2.7 × 10⁶ 2.7 × 10⁶

 

BigDecimal d=new BigDecimal("001.23300");

System.out.println(d.stripTrailingZeros().toPlainString());

//输出1.233

String

str.charAt(i)//str字符串的第i个

startsWith():确定此实例的开头是否与指定的字符串匹配。

String s="asdf";

if(s.startsWith("as"))

System.out.println(1);

//输出1

substring(),返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。

String s="asdf";

System.out.println(s.substring(1));

//输出sdf

 

数组操作

import java.util.Scanner;
import java.math.BigInteger;
public class Main {
static BigInteger h[]=new BigInteger[110];  //数组定义
public static void main(String args []){
h[0]=new BigInteger("1");
for(int i=1;i<=100;i++){
h[i]=(h[i-1].multiply(BigInteger.valueOf(4*i-2))).divide(BigInteger.valueOf(i+1));
}
Scanner input=new Scanner(System.in);
while(input.hasNext()){
int a=input.nextInt();
if(a==0){
return ;
}
System.out.println(h[a]);
}
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: