Java在ACM中的主要应用是大数类【个人见解】。做个小总结,留作模板用。
类名默认为Main。
输入:
声明一个输入对象cin;Scanner cin=new Scanner(System.in);
输入一个int值:Int a=cin.nextInt();
输入一个大数:BigDecimal a=cin.nextBigDecimal();
EOF结束:while(cin.hasNext()){。。。}
输出:
输出str【任意类型】:System.out.println(str);【有换行】System.out.print(str);【无换行】
System.out.println(”str“);【输出字符串str】
赋值:BigInteger a=new BigInteger(String.valueOf(12));
大数类特殊函数:
判断相等:c.compareTo(BigDecimal.ZERO)==0【c等于】
判断大于:c.compareTo(BigDecimal.ZERO)>0 【c大于0】
判断小于:c.compareTo(BigDecimal.ZERO)<0 【c小于0】
修改格式:c.stripTrailingZeros().toPlainString();【c去除末尾0,并转换乘字符串】
字符串函数:
str.startWith("0").【以0开始】str.endWith("0")【以0结束】
str.subString(int x,int y)【从x到y的str的子串】str.subString(int x))【从x到结尾的str的子串】
BigInteger的函数:
构造:public BigInteger(String str)【把string类型数据转变为大整数】
构造:public BigInteger pow(BigDecimal b)【b次方】
加:public BigInteger add(BigInteger b)【加上b】
减:public BigInteger subtract(BigInteger b)【减去b】
乘:public BigInteger multiply(BigInteger b)【乘b】
除:public BigInteger divided(BigInteger b)【除b】
最大值:public BigInteger max(BigInteger a)【返回最大值】
最小值:public BigInteger min(BigInteger a)【返回最小值】
除:public BigInteger [] dividedandRemainder(BigInteger b)【除b,数组第一位是商,第二位是余数】
BigDecimal的函数:
构造:public BigDecimal(String str)【把string类型数据转变为高精度数】
public BigDecimal(int str)【把int 类型数据转变为大整数】
public BigDecimal(double str)【把double类型数据转变为大整数】
次方:public BigDecimal pow (BigDecimal b)【b次方】
加:public BigDecimal add(BigDecimal b)【加上b】
减:public BigDecimal subtract(BigDecimal b)【减去b】
乘:public BigDecimal multiply(BigDecimal b)【乘b】
除:public BigInteger divided(BigInteger b)【除b】
举例:
A+B。输出最简结果
import java.math.BigDecimal;//引入高精度数的包
import java.util.*;//输入输出所在的包【几乎所有的代码都必须加的包】
public class Main {public static void main(String []args){Scanner cin=new Scanner(System.in);BigDecimal a,b,c;while(cin.hasNext()){a=cin.nextBigDecimal();b=cin.nextBigDecimal();c=a.add(b);if(c.compareTo(BigDecimal.ZERO)==0) {System.out.println("0"); continue;}String str=c.stripTrailingZeros().toPlainString(); if(str.endsWith(".")) str=str.substring(0,str.length()-1);System.out.println(str);}}
}
A的阶乘:
import java.util.*;
import java.math.*;
public class Main
{public static void main(String args[]){int m,i;Scanner in = new Scanner(System.in);m=in.nextInt();BigInteger sum = new BigInteger(String.valueOf(m));for(i=m-1;i>0;i--){BigInteger x =new BigInteger(String.valueOf(i));sum=sum.multiply(x);}System.out.println(sum);}
}